On 9/19/2018 4:56 AM, Neil Van Dyke wrote:
Currently, in main Racket reader, `#:` starts a keyword, as in `#:foo`.
Who on this email list would also like (or not like) `:` to start a
keyword, as in `:foo`?
And, if you want the reader to also support `:foo`, would you want the
writer to default to writing `:foo` rather than `#:foo` (and how much
would you want that)? And in the documentation?
(I've wanted "colon keywords" since keywords were first added to
Racket, but have been dutifully enduring the "hash-colon", rather than
make anyone who uses my open source packages depend on an additional
package for my own variant of `#lang racket/base`. But, after many
years of this, I still dislike typing and looking at `#:`. I know
some people don't understand why anyone cares (or suspect
bikeshedding), but I get the impression that this is getting into
cog-sci differences between individual programmers. Maybe one way to
look at it is a vague "programmer preference", like light vs. dark
screen background, rather than try to argue that no one should want to
do it that way. Then the question might be: how popular is this
"colon keyword" programmer preference? Which is why I'm asking the
I have a vague memory of this being discussed before. Ah, yes ... in 2015.
Much of my comment then still stands so I'll repeat it here: (more below)
On Sat, 21 Nov 2015 18:06:29 -0500, George Neuner wrote:
I actually prefer the #: syntax, but what I would like is support for
"existence" keywords - i.e. keywords with no argument - where the only
thing you care about is whether or not the keyword was provided.
Obviously, this can be done using a "rest" argument and symbols, but
the #: syntax draws attention that other symbols do not because
DrRacket, at least by default, colors keywords differently from other
Although the keyword syntax coloring still works with a tick before a
symbol that looks like a keyword, having to remember the tick is a
PITA when you are thinking of the symbol as a keyword. If you forget
it, you get a nasty
"application: missing argument expression after keyword"
How much trouble would it cause to allow naked keywords and provide a
predicate based on their name? E.g.,
(define ( test blah #:opt #:req reqvalue )
(when #:opt? ... )
(test #:req 3)
(test #:req 42 #:opt)
Or even something like (define ( test blah #:opt  #:req req ) which
makes it more obvious that the keyword is only there to be tested?
Since then my opinion has altered slightly. The #: syntax is less
important than syntax coloring to call attention to the keyword. However
the desire for purely symbolic "existence" keywords remains.
You received this message because you are subscribed to the Google Groups "Racket
To unsubscribe from this group and stop receiving emails from it, send an email
For more options, visit https://groups.google.com/d/optout.