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)

External representation taylanbayirli@xxxxxx 10 Sep 2015 15:21 UTC

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.

My current idea:

#hashq((key . value) ...)  ; eq? based
#hashv((key . value) ...)  ; eqv? based

#hash((key . value) ...)  ; equal-hash & equal? based

#hash(string    (key . value) ...)  ; string-hash & string=? based
#hash(string-ci (key . value) ...)  ; string-ci-hash & string-ci=? based
#hash(symbol    (key . value) ...)  ; symbol-hash & eq? based

(Using symbol=? is unnecessary because the keys already pass through
symbol-hash which means the type-check of symbol=? isn't needed.)

Racket uses #hasheq and #hasheqv instead of #hashq and #hashv.  I
decided to go with the latter for similarity to memq and memv, and the
shorter the reader hash-tag the better.

What does everyone think?

Taylan