This question already has answers here:
Closed 6 years ago.
What is the difference between eq?, eqv?, equal?, and = in Scheme?
(6个答案)
我真的搞不清
请解释一下。
再说,我们为什么需要它们?
(6个答案)
我真的搞不清
eq?
、eqv?
和equal?
之间的主要区别请解释一下。
再说,我们为什么需要它们?
最佳答案
对于技术解释,请查看specification,您将找不到更详细的参考资料或者只需检查您的翻译documentation,例如在Racket中:(equal? v1 v2) → boolean?
如果且仅当两个值equal?
时,它们才是eqv?
值,除非为特定数据类型另有指定进一步规范为equal?
的数据类型包括字符串、字节字符串、对、可变对、向量、框、哈希表和可检查结构在最后六种情况下,等式是递归定义的;如果v1
和v2
都包含引用循环,则当值的无限展开相等时,它们相等。(eqv? v1 v2) → boolean?
如果且仅当两个值eqv?
时,它们才是eq?
值,除非为特定数据类型另有指定只有数字和字符数据类型的eqv?
与eq?
不同。(eq? v1 v2) → boolean?
eq?
如果#t
和v1
引用同一对象,则返回v2
,否则返回#f
另请参见Object Identity and Comparisons。
10-06 00:34