Emacs Lisp 中“不可区分”的含义是什么?

问题描述

我正在阅读一个名为 eqlEmacs Lisp 函数的文档:

Return t if the two args are eq or are indistinguishable numbers.

这里的 indistinguishable 是什么意思?我一直在搜索文档,但没有找到解释。

解决方法

eq 谓词仅在比较相同的对象时才返回 t。但是不能保证比较相等的两个值是同一个对象;两个具有相同值的文字甚至不能保证是同一个对象。因此,(eq 1 1) 可能会也可能不会评估为 t。对于数字类型,eql 比较值,因此 (eql 1 1) 将始终评估为 t。但是,eql 有点微妙:(eql 1 1.0) 将评估为 'nil,因为 11.0 不是不可区分,即,它们不共享相同的类型。因此,在引用的上下文中,不可区分意味着操作数具有相同的类型和相同的值。