Re: Keyword arguments in procedures specified in SRFIs
Peter Bex 22 Jul 2019 18:52 UTC
On Mon, Jul 22, 2019 at 06:54:23AM -1000, Shiro Kawai wrote:
> On the disjoiintness of keywords and symbols, and compatibility...
>
> Gauche used to have keywords disjoint from symbols, noted :foo. It's not
> conforming rnrs, though
Hi Shiro!
Could you elaborate on it not being rnrs conforming, please? We just made
the reverse transition in CHICKEN 5.1.
> If you don't want to import (gauche keyword), you can still call
> keyword-accepting procedure by quoting keywords:
> (foo ':foo 1 ':bar 2)
In CHICKEN, we allow the #:foo syntax always, and WRITE will output
keywords like that to ensure it can be read by any CHICKEN. There is
a command line flag and SRFI-39 runtime parameter which affects how
keywords are read: "foo:" or ":foo" can be read as keywords or symbols
depending on the setting (which can be set to prefix, suffix or off).
But #:foo will always be read as a keyword regardless of this setting
to ensure at least a level of read-write invariance.
Keywords are always self-evaluating, so 'foo: and foo: are the same
if you have keyword style set to "suffix". Keywords cannot be bound.
If you want to bind an identifier called "foo:", you can pipe-quote it,
so |foo:| is read as a symbol, while |foo|: is read as a keyword.
Cheers,
Peter