我正在阅读使用Lisp计算阶乘的代码示例,如下所示:
(defun fatorial (n)
(cond
((= n 1) 1)
(t (* n (fatorial (- n 1))))))
所以,我想知道这个代码示例中的t
是什么?它在Lisp中有什么特殊含义吗?我搜索过但无法找到答案!
答案 0 :(得分:6)
这是LISP用于True的符号。在LISP中的cond
中,最后的“catch all”使用t
来表示如果前面的条件都没有计算为True,则此代码将始终执行。
在这里考虑它等同于if-else中的else
。但总的来说,它只代表真实。
答案 1 :(得分:3)
cond由cond
符号后跟多个cond子句组成,每个子句都是一个列表。 cond子句的第一个元素是条件;其余的元素(如果有的话)是动作。 cond形式查找条件评估为真的第一个子句(即,不评估为nil);然后它执行相应的操作并返回结果值。
因此,在你的代码中,第一次测试检查n是否等于1,如果是,则返回1.另一个子句,以" t" (对于lisp中的true)是" else"部分条件。