[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: upper and lower case



Here is the story regarding the Lisp Machine: it is not true that Lisp
Machine Lisp allows only upper case printnames for symbols.  What is
true is that the Lisp reader upcases alphabetic characters when it sees
them as parts of symbol names.  This property of the reader is not wired
into the system in any deep way; it would be simple to modify the reader
to not do this upcasing at all.  It might be only a change to the
readtable, or it might be a minor code modification; I am not sure
which.  It should not be hard to make Dave's code run.  The Lisp printer
also knows about the reader and knows to slashify (usually with vertical
bars) symbols with lower-case letters in them; this is also not hard to
change.

While compatibilty with ITS Maclisp was one consideration in our
decision to have the reader do this, it was not the primary reason.  We
chose to do things this way because our experience with systems that
distinguish case is that they lead to so much confusion that the added
gain of being able to have symbols whose names differ only in case is
small compared to the confusion caused thereby.  A particular case is
the Multics file system, in which users constantly get confused and have
things break because they were not careful about the case in which they
typed something.  Experienced Multics users hardly ever use mixed cases;
they stick to one case (lower-case, as it happens) for almost all names.
In essence, the reason the Lisp Machine reader ignores case is because
PEOPLE usually ignore case.  We decided that the users would be better
served by putting up with the slight restriction in return for the lack
of confusion.

Other minor points: no, there are no upper-case-only keyboards for Lisp
Machines (in fact, our keyboards have seven different shifting keys
(shift, control, meta, hyper, super, top, and greek); they are known
locally as "Space Cadet" keyboards).  Multics Maclisp does distinguish
case in symbol names, which is compatible with the way the rest of
Multics works.  Maclisp is presumably that way because it dates from
before lower-case terminals were common.  I don't know about NIL.  The
Lisp Machine also does not distinguish symbol names with different
typefonts, for the same reason it ignores case.