[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: (BUG LISPM) at MIT-AI
- Subject: CASEQ
- From: GLS at MIT-AI (Guy L. Steele, Jr.)
- Date: Tue ,13 May 80 13:15:00 EDT
CC: GLS at MIT-AI, ALAN at MIT-AI, nil at MIT-MC
TO set the record straight, JONL is *not* entirely at fault
on the name of CASEQ. I believe that I pumped for that.
The reason was not merely to be trivially different from
the LISP Machine. RMS seems to think that the LISP Machine
is always right and any deviation therefrom is gratuitously
perverse. If he thinks my motivations are that simple-minded,
then I am greatly offended.
The true reason was as follows: the LISP Machine indeed introduced
SELECTQ before MacLISP introduced CASEQ. However, the name SELECTQ
was already in use, by InterLISP, to mean something slightly
different. Hence the LISP Machine was ignoring precedent and
chose to use the same name to mean a slightly different thing
(the primary distinction being that the InterLISP version does
not use a keyword T or OTHERWISE, but just has the last argument
form be the OTHERWISE case). Now I happen to agree with the
change in semantics -- it is convenient to be able to omit the
default case, as for a COND, and it is more readable when the
default case is present.
HOWEVER, it seemed injudicious to use the name SELECTQ because that
would make it gratuitously more difficult to convert InterLISP
software to MacLISP. My hope at the time was that we could all
agree on this and make things maximally easy for everyone. Now it
is probably too late.
Historical note: SELECT also means something in InterLISP, and also
in LISP 1.5... and the InterLISP version does not mean the same thing
as the LISP 1.5 version!!!
A secondary reason (but not an overriding one) is that every language
except LISP calls this construction a "case statement". It would
probably aid the spread of LISP if we did not gratuitously choose
different names for concepts which actually are not unique to LISP
but are already widespread.
In any case, I put to you this question: is it more incompatible
to use a different name for almost-the-same thing, or to use the
same name for not-quite-the-same-thing?