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

Re: Bugs found in MCL 2.0b1p2



    Isn't the value of *xxx* equal to the specific "(nil)" that was
    specified in the defconstant?  The value that was inserted into the
    list was the value of *xxx*, not just any "(nil)".
  
Yes, it's EQUAL and EQL but not necessarily EQ.  Your initial message
said that 'the "(nil)" part of the list structure fails to be EQ to
the (defined) constant (identifier),' so I was just explaining why
it wasn't necessarily going to be EQ.

    > (defconstant *xxx* '*xxx*) will "work" because interned symbols are
    > guaranteed to be EQ, at least until there's some other reference to
    > that symbol.
    
    Are you saying that this will quit working because another reference
    gets made to the symbol?

Sorry, verbal clumsiness on my part.  If I have a tree of symbols and
I want to "mark" certain places, I shouldn't use just any ordinary
interned symbol, e.g., X, as my mark, because that symbol might already
occur in the tree, so I wouldn't be able to tell whether the X was
my mark or one of the original symbols.  Using (gensym) or (cons nil
nil) will create a new object that cannot possibly already be in the
tree, and it can be compared with EQ.