External representation taylanbayirli@xxxxxx (10 Sep 2015 15:21 UTC)
Re: External representation taylanbayirli@xxxxxx (10 Sep 2015 15:22 UTC)
Re: External representation Arthur A. Gleckler (10 Sep 2015 15:24 UTC)
Re: External representation taylanbayirli@xxxxxx (10 Sep 2015 20:10 UTC)
Re: External representation Arthur A. Gleckler (10 Sep 2015 20:44 UTC)
Re: External representation taylanbayirli@xxxxxx (11 Sep 2015 07:36 UTC)
Re: External representation John Cowan (11 Sep 2015 13:04 UTC)
Re: External representation taylanbayirli@xxxxxx (11 Sep 2015 13:25 UTC)
Re: External representation Per Bothner (11 Sep 2015 14:05 UTC)
Re: External representation taylanbayirli@xxxxxx (11 Sep 2015 14:21 UTC)
Re: External representation Kevin Wortman (11 Sep 2015 19:10 UTC)
Re: External representation taylanbayirli@xxxxxx (11 Sep 2015 21:48 UTC)
Re: External representation Shiro Kawai (12 Sep 2015 02:04 UTC)
Re: External representation John Cowan (10 Sep 2015 16:30 UTC)
Re: External representation taylanbayirli@xxxxxx (10 Sep 2015 18:12 UTC)
Re: External representation John Cowan (10 Sep 2015 19:02 UTC)
Re: External representation Per Bothner (10 Sep 2015 21:25 UTC)
Re: External representation John Cowan (10 Sep 2015 21:52 UTC)

Re: External representation John Cowan 10 Sep 2015 16:30 UTC

Taylan Ulrich Bayırlı/Kammer scripsit:

> I think it would be very useful to specify external representation
> (reader syntax) for hash tables, but I want to make sure I'm not adding
> anything unreasonable to the spec.  External representation is a big
> deal since it changes the lexical syntax.

I think it's very important, if you are going to add lexical syntax,
to comply with SRFI-108.  It doesn't have a lot of coverage yet beyond
Kawa, but it is the first mechanism for extending Scheme lexical syntax
(always excepting Racket) that doesn't suffer from phasing problems.
Its downside is that it doesn't work like you expect in data files read
with `read`, but how common are those these days?

If you decide to do that, then all you have to do is pick a set of tags
like your `hash`, `hashq`, and `hashv` and explain the meaning of the
identifiers `$construct$:hash` etc. (which can be procedures or macros).
That way you don't need a separate SRFI, and people with SRFI-108 can
just use:

> &hashq{(key . value) ...}  ; eq? based
> &hashv{(key . value) ...}  ; eqv? based
> &hash{(key . value) ...}  ; equal-hash & equal? based

etc.

--
John Cowan          http://www.ccil.org/~cowan        xxxxxx@ccil.org
I am expressing my opinion.  When my honorable and gallant friend is
called, he will express his opinion.  This is the process which we
call Debate.                   --Winston Churchill