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
email list.)
I have a vague memory of this being discussed before. Ah, yes ... in 2015.
https://groups.google.com/forum/#!msg/racket-users/3vOTC1FbieA/5SUP4wzKCAAJ;context-place=forum/racket-users
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
symbols.
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"
error.
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.
YMMV,
George
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.