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

issue LOAD-TIME-EVAL



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 --