条件退货(零)为真

ali*_*cho 1 common-lisp

我几天前开始学习常见的口齿不清,所以请记住我是一个总菜鸟,这是我的代码:

ELISP> (member nil '(2 3 nil))
(nil)

ELISP> (if (member nil '(2 3 nil))
       'true
       'false)
true
Run Code Online (Sandbox Code Playgroud)

所以我的问题是"如果"如何回归真实?

mel*_*ene 5

我检查了文档member:

如果某个元素满足测试,则返回以此元素开头的列表尾部; 否则返回nil.

你的情况,你有三个元素的列表(其中的元件是2,3nil).

nil是此列表的成员,因此(member nil '(2 3 nil))返回从找到的元素开始的子列表:

(nil)  ; a one-element list
Run Code Online (Sandbox Code Playgroud)

这个值是真的,因为只有nil它本身是假的; 包含的单元素列表nil不是false.