David Kastrup <d...@gnu.org> writes: > I think it is completely absurd. It would mean, for example, that > (memq x (list x)) > is generally unspecified. It would mean that things like > (eq? (car x) (car x)) > are generally unspecified even when x is a pair.
So that we can have (eq? x x) but not (eq? (car x) (car x)). I really don't care what the standard claims. That a Scheme object should be able to become un-eq? to itself just because it is a number is nonsense. That different number expressions might or might not end up as one object because of a lack of identity is fine. But that a Scheme object might split into several un-eq? identities is schizophrenic. That would violate more invariants than anything. It is fine if the optimizer decides not tracking the identity of numbers. But that means that, absent any reliable identity information, it must declare equal numbers as eq?, not as un-eq?. This is a one-way street. Other options don't make sense. -- David Kastrup