Common lisp 两个向量之间的比较(相等(向量2 3 4)(向量2 3 4))=NIL

Common lisp 两个向量之间的比较(相等(向量2 3 4)(向量2 3 4))=NIL,common-lisp,Common Lisp,在common lisp中,我们有: (equal (vector 2 3 4) (vector 2 3 4)) = NIL (equal (cons 1 2) (cons 1 2)) => T 为什么第一个为假,第二个为真?来自公共Lisp: 对于conses,equal递归定义为两辆车相等,两辆CDR相等 只有当两个数组是eq时,它们才是相等的,只有一个例外:字符串和位向量逐元素进行比较(使用eql) vector创建数组,但它不是字符串或位向量。因为这两个数组不是eq,所以它们不是

在common lisp中,我们有:

(equal (vector 2 3 4) (vector 2 3 4)) = NIL
(equal (cons 1 2) (cons 1 2)) => T
为什么第一个为假,第二个为真?

来自公共Lisp:

对于conses,equal递归定义为两辆车相等,两辆CDR相等

只有当两个数组是eq时,它们才是相等的,只有一个例外:字符串和位向量逐元素进行比较(使用eql

vector
创建数组,但它不是字符串或位向量。因为这两个数组不是
eq
,所以它们不是
相等的

如果希望比较谓词在数组具有所有相同元素时将其视为等效的,请使用

这可能会有所帮助: