CL 和 Scheme 都定义了 (and)
以返回不带参数的 t
(或 #t
)。
我正在尝试理解这样做的理由。我天真的假设是空集为假,传入零参数感觉就像传入任何可能为真的东西一样。
编辑:clojure 遵循相同的约定。我一定是遗漏了一些基本的 Lisp 假设。
最佳答案
空积为1,原因是1是*
的中性元素。
如果你有 2 和 3 的乘积,然后乘以无的乘积,你将得到 2*3*1 = 6。我们可以这样写
(product (product 2 3) (product))
= (product 6 1)
= 6
与和
相同的计算:
(and (and #t #t) (and))
= (and #t ?)
= #t
我们希望空的 (and)
给出一个不影响结果的值 ?
。
答案是 #t
因为 #t
是一个中性元素。
(and x #t) = x for all boolean x
关于clojure - 无参数(和)返回 t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30467726/