(if '(nil nil)
'print-true
'print-false)
(if '(nil)
'print-true
'print-false)
在上面的代码中,为什么Lisp解释器总是将这些表单评估为true(print-true)。我认为nil
在Common Lisp中表示为false。
我正在使用GNU CLISP。
答案 0 :(得分:11)
nil
是假的。其他任何事都是真的。 '(nil)
是包含一个元素的列表,即nil
。 '(nil nil)
是一个包含两个元素的列表,即nil
和nil
。这些表达式本身都不与nil
相同,因此if
将其视为真。
答案 1 :(得分:2)
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),它与空列表不同。