据我了解,NIL是许多事物的象征:空列表或布尔假。到目前为止一切都很好,但是为什么有时输出中会显示NULL?
clisp> (type-of NIL)
NULL
clisp> (type-of t)
BOOLEAN
clisp> (type-of (not t))
NULL
clisp> NIL
NIL
clisp> (eq NULL NIL)
ERROR..
因此NULL也不是一个已定义的符号,"BASIC-STRING-6"
也不是一个。但是我对术语NULL感到困惑,因为无论是否被否定,布尔值都应保持为布尔值。
您可能以为T
布尔值NIL
不是,这很奇怪。原因是NIL
有几顶帽子。这是一个空列表,它是符号NIL,它是布尔值false。因此,它有时会在不适合布尔类型值的上下文中发生,因此从类型安全性的角度来看,布尔类型不适用于它。与此类似,在Scheme中,布尔值false与空列表不同。
NULL被赋予作为type
的NIL
。
NIL
是表示Common Lisp中NULL的符号。它也是空列表的表示()
。#'NULL
是检查变量是否为NULL(即eq
NIL
)的函数。
如果要使用NULL而不是NIL,则可以定义NULL。(实际上这可能是一个可怕的主意。)
(defconstant null nil)
(type-of NULL) ; ==> NULL
NULL ; ==> NIL
(eq NULL NIL) ; ==> T
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句