Do symbols need to be EQ?

Edi Weitz edi at weitz.de
Fri Jul 3 08:48:42 UTC 2015


Perhaps the excerpt below (from a fresh LW image) makes more obvious
what my "philosophical problem" is.  I have redacted the output of
DISASSEMBLE to only show the relevant parts.  It shows that EQ is
essentially just one simple comparison with a machine word (which is
what I expected).  It also shows that I get the same machine word
again as long as I don't mess around with UINTERN or something.  But
once I've done that, I get _another_ machine word and so in terms of
simple-minded EQ I get a different object.

CL-USER 1 > (defun foo-1 (x)
              (eq x 'bar))
FOO-1
CL-USER 2 > (disassemble 'foo-1)
      ;; ...
      21:      3DF771F921       cmp   eax, 21F971F7    ; BAR
      26:      750D             jne   L3
      ;; ...
NIL
CL-USER 3 > (defun foo-2 (x)
              (eq x 'bar))
FOO-2
CL-USER 4 > (disassemble 'foo-2)
      ;; ...
      21:      3DF771F921       cmp   eax, 21F971F7    ; BAR
      26:      750D             jne   L3
      ;; ...
NIL
CL-USER 5 > (unintern 'bar)
T
CL-USER 6 > (defun foo-3 (x)
              (eq x 'bar))
FOO-3
CL-USER 7 > (disassemble 'foo-3)
      ;; ...
      21:      3DAB71F921       cmp   eax, 21F971AB    ; BAR
      26:      750D             jne   L3
      ;; ...
NIL



More information about the pro mailing list