Lisp:为什么以及如何将 '(nil nil) 计算为 true?
(if '(nil nil)
'print-true
'print-false)
(if '(nil)
'print-true
'print-false)
在上面的代码中,为什么 Lisp 解释器总是将这些形式评估为 true (print-true)。我认为 nil
在 Common Lisp 中代表 false。
我正在使用 GNU CLISP。
(if '(nil nil)
'print-true
'print-false)
(if '(nil)
'print-true
'print-false)
In the code above, why does the Lisp interpreter always evaluate these forms to true (print-true). I thought nil
represented false in Common Lisp.
I am using GNU CLISP.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
nil
为假。其他的都是真的。'(nil)
是一个只有一个元素的列表,即nil
。'(nil nil)
是一个包含两个元素的列表,即nil
和nil
。这些表达式本身都不与nil
相同,因此if
将其视为 true。nil
is false. Anything else is true.'(nil)
is a list with one element, namelynil
.'(nil nil)
is a list with two elements, namelynil
andnil
. Neither of these expressions is the same asnil
by itself, soif
sees it as true.nil 相当于一个空列表。
'(nil) 相当于 (list nil),它与空列表不同。
nil is equivalent to an empty list.
'(nil) is equiv to (list nil) which is different from an empty list.