clojure - 无参数(和)返回 t

标签 clojure scheme lisp common-lisp

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/

相关文章:

list - 删除列表中的重复元素

Clojure 示例 : I cannot comprehend what are the values of "%2" and "%1" in "(str %2 %1)"

clojure:根据其他键/值对计算映射中的新键/值对

function - 函数如何在运行时修改然后传播到多个线程?

clojure - "^:static"在 Clojure 中做什么?

macros - Clojure doseq 生成巨大的代码?

if-statement - 方案:如果条件有多个程序

javascript - 理解 scheme 中的 fold 和 reduce 函数

variables - 在 LISP 中扩展列表中的变量

lisp - 将字符串列表转换为 Common Lisp 中的整数列表