[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
issue LOAD-TIME-EVAL
- To: jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK
- Subject: issue LOAD-TIME-EVAL
- From: Jon L White <jonl@lucid.com>
- Date: Tue, 10 Jan 89 01:07:15 PST
- Cc: @sail.stanford.edu:jonl@lucid.com, @cs.utah.edu:sandra@defun, cl-compiler@sail.stanford.edu, alarson@altura.honeywell.com
- In-reply-to: Jeff Dalton's message of Tue, 10 Jan 89 01:50:39 GMT <12615.8901100150@subnode.aiai.ed.ac.uk>
re: I don't understand this remark. Aaron seems to be say that only
QUOTE allows EQ things to become non-EQ, and you seem to say that
only QUOTE allows non-EQ things to become EQ.
Consider the program:
(EQ (QUOTE (a b c)) (QUOTE (a b c)))
the two "sub-programs" which are both written as
(QUOTE (a b c))
are surely not EQ. But the compiler is licensed to "coalesce" the
two non-EQ constants into one "EQ" one, almost as if the user had
written instead:
(EQ #1=(QUOTE (a b c)) #1#)
I think that is what Aaron is referring to. And I enlarged upon it
to point out that even when the programs are "eq" -- as in
(EQ #1=(CONS 'A 'B) #1#)
the compiler cannot reduce this to one result. The reduction is
permitted only as a special case on QUOTE (and, if we worked on it,
it would be permitted on any stateless, side-effect-free function).
-- JonL --