Hacker News new | past | comments | ask | show | jobs | submit login

Ah, you're correct, a copy can be made at the call to eq.

I stand by the rest of what I said. It's no more strange for (eq 1 1) to be false than (eql '(1) '(1))




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.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: