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.

Reply via email to