5
(if '(nil nil)
    'print-true
    'print-false)

(if '(nil)
    'print-true
    'print-false)

上記のコードで、Lispインタプリタが常にこれらのフォームをtrue(print-true)と評価するのはなぜですか。nilCommonLispでは間違っていると思いました。

GNUCLISPを使用しています。

4

2 に答える 2

12

nilは偽です。それ以外はすべて真実です。'(nil)は、1 つの要素、つまり を持つリストnilです。は、と'(nil nil)の 2 つの要素を持つリストです。これらの式はどちらもそれ自体と同じではないため、真と見なされます。nilnilnilif

于 2011-02-14T06:53:31.283 に答える
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) と同等であり、空のリストとは異なります。

于 2011-02-14T06:57:13.497 に答える