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

(EQUAL "a" "a") -> ()

Regarding this discussion:
 Date: 29 SEP 1980 0910-EDT
 From: KMP at MIT-MC (Kent M. Pitman)
 The primary use of "..." is to get an object which prints a certain way...
 "..." is defined on non-Multics Maclisp to return an UNINTERNED
 SYMBOL which has been SETQ'd to itself (so that it self-evaluates).

While I understand the reason for this situation and am capable of using
SAMEPNAMEP (sigh) instead of EQUAL to get around it, let's not criticize
the complaint -- it is a legitimtate gripe -- i.e., the semantic rule of
thumb that "if two things LOOK THE SAME they are almost always EQUAL" has
been violated, and thus this behavior can reasonably be called a "bug".
Off- hand I can't think of an efficient approach to solving it, but perhaps
intern-ing "strings" on MacLisps that implement them as symbols should be
considered?  I have had several bug-messages come to me (at TI) on this
subject in the last month.  Users of other dialects such as Yale/UCI LISP
are used to having "real" strings, i.e., "foo" works and (EQUAL "a" "a")
returns T -- so this is seen as a deficiency of MacLISP.  (But then the SETQ
introduces at least a small possibility of name clash lossage -- so perhaps
we should all stick to '|foo|, which is a true QUOTEd interned symbol -- or
plead for true strings as a new datatype in those implementations that
lack them.                Regards, Mark