(if '(nil nil)
'print-true
'print-false)
(if '(nil)
'print-true
'print-false)
在上面的代码中,为什么 Lisp 解释器总是将这些形式评估为真(print-true)。我认为nil
在 Common Lisp 中代表错误。
我正在使用 GNU CLISP。
nil
是假的。其他任何事情都是真的。'(nil)
是一个包含一个元素的列表,即nil
. '(nil nil)
是一个包含两个元素的列表,即nil
和nil
。这两种表达方式都不相同nil
,因此if
认为它是正确的。
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),它不同于空列表。