Lisp:为什么以及如何将 '(nil nil) 计算为 true?

发布于 2024-10-17 01:34:48 字数 247 浏览 9 评论 0原文

(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听,心雨的声音 2024-10-24 01:34:48

nil 为假。其他的都是真的。 '(nil) 是一个只有一个元素的列表,即nil'(nil nil) 是一个包含两个元素的列表,即 nilnil。这些表达式本身都不与 nil 相同,因此 if 将其视为 true。

nil is false. Anything else is true. '(nil) is a list with one element, namely nil. '(nil nil) is a list with two elements, namely nil and nil. Neither of these expressions is the same as nil by itself, so if sees it as true.

青朷 2024-10-24 01:34:48

nil 相当于一个空列表。

CL-USER> (if (list ) 'print-true 'print-false) 
; prints PRINT-FALSE 
CL-USER> (if (list nil) 'print-true 'print-false) 
; prints PRINT-TRUE

'(nil) 相当于 (list nil),它与空列表不同。

nil is equivalent to an empty list.

CL-USER> (if (list ) 'print-true 'print-false) 
; prints PRINT-FALSE 
CL-USER> (if (list nil) 'print-true 'print-false) 
; prints PRINT-TRUE

'(nil) is equiv to (list nil) which is different from an empty list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文