[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Keywords, :Keywords, &More-Keywords
- To: Moon @ SCRC-TENEX
- Subject: Keywords, :Keywords, &More-Keywords
- From: Kent M. Pitman <KMP @ MIT-MC>
- Date: Sun, 15 May 1983 18:40:00 -0000
- Cc: Common-Lisp @ SU-AI, JWalker @ SCRC-TENEX
I don't have a strong opinion on the ECASE vs keyworded-CASE. I just
wanted to make sure the alternatives were looked on. The tension is
basically one of an extended function name space vs a keyworded syntax;
Common Lisp has tended to prefer keywords, so I figured it was best to
at least review the keyword alternative.
The issue you bring up about OTHERWISE is an interesting one. I wonder
if OTHERWISE -should- be (or "should have been") a keyword. I have
always disliked its being a global symbol just so it could be used in
this peculiar case. Also, users may believe it is keyword-like in nature
and be very confused by the fact that :OTHERWISE doesn't work! Already
there is a big problem with users not understanding why we've chosen
&keywords and :keywords. The way keywords are currently defined, making
the words in the bvl be :keywords would not be incompatible since it
should be an error to bind a symbol in the keyword package anyway! I am
not really proposing a change; just thinking aloud. We will some day be
subject to a lot of flack from users who claim that the spec is
cluttered by more layers of syntax than it need be. Consider that a
novice might find
(DEFUN FOO (X :OPTIONAL Y Z :REST W) ...)
significantly easier to learn. And even
(SELECTQ FOO ((A B) 3) ((C) 4) (:OTHERWISE 5))
has a certain appeal... I suppose the :OPTIONAL change might really
throw LispM Lisp through a loop during any transition ... On the other
hand, I bet changing all OTHERWISEs, &RESTs, &OPTIONALs, etc. would be
as simple as a single Tags Query Replace ... And once you release the
language, a change like that will never be so easy again ... Oh well.
I think if someone else did take this discussion seriously that I
probably would too...
--kmp