全局变量a是一个cons单元,但不是一个列表。为什么 LISTP 返回 T?
* (defvar a (cons 1 2))
A
* a
(1 . 2)
* (listp a)
T
来自CLHS
,则返回 true;否则,返回 false。list
类型
list
的定义是:
类型
和cons
形成类型null
的详尽划分。list
因为
(1 . 2)
是 cons
,所以它也是 list
。
(listp object) == (typep object 'list) == (typep object '(or cons null))
为了提高效率,
listp
不会尝试确定它是否是一个以NIL
结尾的正确列表。没有标准函数可以执行此操作。请参阅 检查 Common Lisp 中的正确列表