Hendrik Boom wrote on 10/15/2015 01:25 PM:
I'd like to ask:
What do the Scheme standards say about this?
What do Lisp standards say about this?
I don't know the answers to these questons, though maybe I should, and
Racket is not a standard Scheme, but I think these answers should
at least guide us.
Racket is all grown-up as its own language/platform now, and I
definitely wouldn't encumber Racket evolution with CL or RnRS
decisions. (Though those other Lisp family subtrees have their own
noble merits.)
I just found a paper that lays out Racket's pound-colon-prefix
rationale: Flatt, Barzilay, "Keyword and Optional Arguments in PLT
Scheme", http://www.ccs.neu.edu/racket/pubs/scheme2009-fb.pdf
But to start to answer your question, CL has long used colon-prefix for
the visual appearance of keyword arguments.
Most Schemes don't agree with each other on keywords, though there is a
tendency towards programmer-controlled selectivity among multiple
conventions for what keyword arguments look like:
* I don't see keyword arguments in a quick skim of R7RS (although Google
does find random claims that R7RS has keyword arguments, perhaps
referring to committee discussion).
* Gambit Scheme has colon-suffix, plus some selectivity for colon-prefix
(and uses pound-bang for some different purpose?).
http://www.iro.umontreal.ca/~gambit/doc/gambit.html#Keyword-syntax
* Marc Feeley's (of Gambit fame) SRFI-88 and SRFI-89 propose colon-suffix.
* Guile supports all three conventions, selectively.
http://www.gnu.org/software/guile/manual/html_node/Keyword-Read-Syntax.html
* Chicken uses pound-bang and selectively either colon-prefix or
colon-suffix.
http://wiki.call-cc.org/man/4/Non-standard%20read%20syntax#keyword
* Gauche has colon-prefix.
http://practical-scheme.net/gauche/man/gauche-refe_5.html
* Chibi Scheme seems to use colon-suffix.
The Scheme situation is discouraging, and I'm glad that Racket (PLT
Scheme) went ahead and did something. However, I wish we all had cared
slightly less about R5RS compatibility and such back then (especially
since R5RS compatibility has been abandoned in much larger ways in
Racket today, such as in pair mutability). Perhaps I could've been
using colon-prefix happily the last several years. And also, no one
would have introduced the few problematic colon-symbols that now have to
be considered before adding colon-prefix keywords today.
I'm still interested in adding colon-prefix keywords to `#lang racket`
and `#lang racket/base`, ASAP, if the designers consider that
worthwhile. If it's not considered worthwhile at this time, then I'm
tempted to finally do it with a package of my own writing, though that
might effectively fragment the language.
(BTW, in response to an earlier comment regarding fragmentation, I think
that `#lang foo-reader racket` and `#lang foo-replacing-racket-reader`
are equivalent in immediate fragmentation effect. What's more
significant to fragmentation is when different people are using
*incompatible source dialects* in snippets of code in forum posts,
documentation, etc. -- not what the `#lang` line looks like in a
complete module, if the code below that line would be the same
regardless, and the module still interoperates across source dialects.)
Neil V.
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.