Felix raised a good point, which is that many Schemers, including
those that regularly use keywords, feel at some level that they're a
bit of a hack. Keywords are purely syntactic sugar, and add
complexity to the language core.
Yet we use them.
Even if not in the literal sense of a self-evaluating literal with a
colon stuck on one end, sooner or later most people come across a
procedure with too many parameters to simply be tacked on as
optional arguments. Currently there are many ways to handle this:
...
At the same time, Felix's concern is very valid. We shouldn't use
keywords everywhere just because we can. Many of CL's functions
take only one or two keyword arguments which could just as well be
passed as an optional argument. And I think most Schemers would
prefer
(assoc elt ls my-equal?)
to
(assoc elt ls test: my-equal?)
At the other extreme, SSAX and GUI interfaces clearly demand keyword
API's. In the middle are interfaces like hash-tables and ports,
which could be argued either way. We'll just have to fight those
out :)