mirror of
https://github.com/storytold/cadcraft.git
synced 2026-10-24 10:56:51 -06:00
`(= (type x) 'LIST)` is how an AutoLISP routine tests a type, because `type` returns a symbol. `=` coerced both of its arguments to numbers, so the symbol failed the coercion and the routine stopped at its first type test: _$ (= (type 1) 'INT) bad argument type: numberp: INT `=` and `/=` now compare numbers and strings as before, and any other atom -- a symbol, `nil`, an entity name, a selection set, a file handle -- by what it is, the way `eq` does. Two consequences, both closer to AutoLISP than raising was: a mismatch of kinds answers `nil` rather than failing, so `(= 1 "1")` and `(= '(1) '(1))` answer (comparing list structure is `equal`'s job), and `(= nil nil)` is `T`. The ordering comparisons still take numbers and strings only, as AutoLISP has them: `(< 'a 'b)` remains `bad argument type: numberp: A`. Fix: #1597