2010-10-19 41 views
3

Common Lisp中是否有通配符是eql的任何原子?eql的Common Lisp通配符

也就是说,没有任何通配符,这样

(eql wildcard any-atom) 

返回true?

+0

你有什么用例需要这个?是否可以使用REMOVE-IF将其转换为第二遍? – Vatine 2010-10-20 12:05:19

回答

8

EQL的目的是比较对的某些基本类型的对象的值相等(数字,字符)并比较用于所有其他对象(符号,数组,conses之外,结构,流的标识,CLOS对象,...)。

因此,与其他事物“相同”的东西是没有意义的。 EQL的目的是使身份可测试。这件事是否与另一件事情相同?但是,与其他所有事物相同的事物的目的是什么?它们之间已经不相同了?

原子的想法在现代Lisp中也没什么意义。按照定义,一切都是一个原子,当它不是一个坏胞时。

9

函数atom如果它的参数是一个原子,则返回true。