【发布时间】:2014-05-22 06:39:46
【问题描述】:
我正在阅读 Conrad Barski 的《Land of Lisp》,我对使用“if”命令(仅举几例)有点困惑..
所以,我知道写 if '() 表示列表为空且条件为假,如果 '(1) 表示列表非空且条件为真。
问题是 lisp 如何知道根据 if(1) 条件的性质(真/假)选择和输出哪个表达式?例如,在语句下面的代码中,如果 '(1) 为真,那么 lisp 如何以及为什么选择表达式 I-AM-TRUE 作为输出?
(if '(1)
'i-am-true
'i-am-false)
I-AM-TRUE
类似地,它如何以及为什么在下面的示例中输出 How-does-this-happen..
(if '(1)
'how-does-this-happen
'any-guesses)
HOW-DOES-THIS-HAPPEN
【问题讨论】:
-
您查看过
if的文档吗?if接受两个或三个参数(第三个默认为nil,如果未提供),第二个始终是“then”部分,第三个始终是“else”部分。这不是“选择”;这只是特殊运算符的语法。 -
这个问题似乎是题外话,因为它是关于文档中明确回答的语言中的基本条件运算符。文档中明确回答的问题不属于 StackOverflow(请参阅 meta.stackexchange.com/questions/208372/…)。
-
我猜在这里,但我认为这让你感到困惑。唯一值 NIL 用于在 common lisp 中表示 false。它也代表空列表。也就是说 NIL 等于 ()。所有其他值都被视为真。此外,NIL 评估它的自我。所以 (if '() 'yes 'no) 等价于 (if () 'yes 'no) 和 (if NIL 'yes 'no)。
-
感谢您的回复。
-
嗨 Joshua,文档确实显示了某个函数的结果,但没有解释 if 'condition' 语句,anon 将其精美地放在一行中。如果我是一名中级程序员,并且网上到处都有例子,我不会打扰..但事实并非如此..网上严重缺乏 lisp 支持..我可以从文档,但确实会出现混乱......无论如何,感谢您的反馈。
标签: if-statement common-lisp land-of-lisp