Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You are correct. However:

    (let ((x '(1)))
      (eql x x))
yields T!

It is strange for (eq x x) to be false, when x holds 1, or anything else; yet that appears to be allowed when it holds a number or character.

(eq 1 1) being nil caters to implementations that have heap allocated numbers. That is fine, but under (eq x x), both arguments should be the same heap-allocated 1.

(eq x x) being nil is nothing but pandering to some weird, historic implementations, whose quirk should never have been made ANSI conforming. I don't think it's relevant today.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: