This question already has answers here:
Closed 6 years ago.
What is the difference between eq?, eqv?, equal?, and = in Scheme?
(6个答案)
我真的搞不清eq?eqv?equal?之间的主要区别
请解释一下。
再说,我们为什么需要它们?

最佳答案

对于技术解释,请查看specification,您将找不到更详细的参考资料或者只需检查您的翻译documentation,例如在Racket中:
(equal? v1 v2) → boolean?
如果且仅当两个值equal?时,它们才是eqv?值,除非为特定数据类型另有指定进一步规范为equal?的数据类型包括字符串、字节字符串、对、可变对、向量、框、哈希表和可检查结构在最后六种情况下,等式是递归定义的;如果v1v2都包含引用循环,则当值的无限展开相等时,它们相等。
(eqv? v1 v2) → boolean?
如果且仅当两个值eqv?时,它们才是eq?值,除非为特定数据类型另有指定只有数字和字符数据类型的eqv?eq?不同。
(eq? v1 v2) → boolean?
eq?如果#tv1引用同一对象,则返回v2,否则返回#f另请参见Object Identity and Comparisons

10-06 00:34