Adam Warner <usenet@consulting.net.nz> wrote:
+
 > (eq 42 42)
 >
 > Will this be true? We don't know.

 We can only accept that (eq 42 42) may not be true because we
 have a model of the machine representations of 42.
+
Well, that (eq 42 42) might not be true is generally hard for newbies 
or even anyone who's looked a bit at implementation  to understand,
especially since in every Common Lisp implementation they're going to run
into it *is* true (as a happy accident of any reasonable implementation)
that "equal" fixnums are "eq":
> (eq 42 42)
T
> mostpositivefixnum ; some sample implementation
536870911
> (eq 536870911 536870911)
T
> (let ((x mostpositivefixnum))
;; even more confusing
(eq (+ 41 (floor x 53) 4) (+ 37 (/ ( 536870911 44) 53))))
T
>
So when we talk about this issue, we really should be using examples
that make it more obvious that "eq" might *not* compare true, e.g.,
something like (expt 2 100):
> (eql 1267650600228229401496703205376 1267650600228229401496703205376)
T
> (eq 1267650600228229401496703205376 1267650600228229401496703205376)
NIL
>
Rob

Rob Warnock, PPASELIA <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)5722607