John's right.  We changed Gauche because :foo should read as a symbol in rnrs.

And yes, using #:foo syntax can allow having keywords separete from symbols.  Unfortunately though, Gauche uses #:foo syntax for uninterned symbols, taken from Common Lisp.  It's the same as Kawa---it's a symbol, but reading eq-ness isn't preserved reading #:foo.

I chose :foo over #:foo mainly because of the matter of taste; #:foo stands out too much for me and :foo is about right in balance of standing-out and blending-in.  However, my taste may be influenced too much from Common Lisp experience.

If srfi adopts #:foo syntax, I probably make a special reader mode.   I do wish such srfi allows to make keywords as implemented with symbols with constantly bound to itself, and leave the behavior undefined when they are rebound.


On Mon, Jul 22, 2019 at 9:09 AM John Cowan <> wrote:

On Mon, Jul 22, 2019 at 2:52 PM Peter Bex <> wrote:

Could you elaborate on it not being rnrs conforming, please? 

That is, it is not conformant to treat foo: or :foo as anything but an ordinary identifier,
since : is an ordinary character in identifiers.  However, since #:foo has no meaning
in any RnRS, an implementaion can define it however it likes (except in the strict mode
of R6RS, where anything not explicitly permitted is forbidden).


Thanks for the details.

The more I think about it, the more I think that the best syntax to standardize is #:foo.  It's supported by Kawa, Racket, Gauche, and Chicken. It would be trivial to support in Gauche, Gambit, Bigloo, and STklos, because they already support one or both of the other two keyword syntaxes.  With that resolved, there would then be two questions

As a data type, are keywords a subtype of symbols or disjoint from them?  I think they are generally a subtype, but they are disjoint in Chicken.  Presumably they are disjoint in Racket and Kawa as well.

Do we want the self-quoting semantics or the Racket/Kawa semantics?

John Cowan
The peculiar excellence of comedy is its excellent fooling, and Aristophanes's
claim to immortality is based upon one title only: he was a master maker
of comedy, he could fool excellently.  Here Gilbert stands side by side
with him.  He, too, could write the most admirable nonsense.  There has
never been better fooling than his, and a comparison with him carries
nothing derogatory to the great Athenian. --Edith Hamilton, The Greek Way