在通常的lisp中,我们有:
(equal (vector 2 3 4) (vector 2 3 4)) = NIL
(equal (cons 1 2) (cons 1 2)) => T为什么第一个是假的,第二个是真的?
发布于 2014-02-05 16:48:50
来自通用Lisp 超石化
对于cdrs,等于被递归地定义为两个cars是相等,两个cdrs是相等。 只有当两个数组是eq时,它们才是相等的,只有一个例外:字符串和位向量是逐个元素进行比较的(使用eql)。
vector创建一个数组,但它不是字符串或位向量。因为这两个数组不是eq,所以它们不是equal。
如果您想要一个比较谓词,如果数组具有所有相同的元素,则将其视为等效的,请使用equalp。
https://stackoverflow.com/questions/21583139
复制相似问题