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


re: I don't think I quite agree with JonL's statement about the "only reason",
    it appears to me that it would also be important in:
      (defun foo () '(x y z))
      (tailp (foo) (cons 'a (foo)))

Hmmm, do you remember that the TAILP proposal got bogged down when
it was noticed that a :TEST argument was necessary?

re: My argument was an attempt to isolate the times at which the copying could
    occur, and to point out that the times are not something that discussions
    about QUOTE and EVAL can easily describe.  

Well, I'm not sure what the problem is with focusing on EVAL/COMPILE.
I sent out my note before reading your suggestion about "promotion"; 
that sounds like what I've been saying all along.  Namely, that just 
because something is READ into a lisp doesn't mean it is a constant; 
it only becomes a "constant" when processed by EVAL (or a compiler) 
in an evaluation context.  "Promotion" wouldn't be a bad term for 
that process, and might help "isolate the times", as you say.

However, we still haven't seen any good reason as to why EQ or EQL 
must be the equivalence predicate for constants; why not EQUAL? or
COALESABLEP?  Happily, symbols have the EQ-for-COALESABLEP property,
and characters and fixnums have the EQL-for-COALESABLEP property.
But so what if random strings, lists or defstructs don't have these

-- JonL --