【发布时间】:2012-06-17 14:31:13
【问题描述】:
如何检查 lisp 中的列表是否为点对?
CL-USER 20 : 3 > (dotted-pair-p (cons 1 2))
T
CL-USER 20 : 3 > (dotted-pair-p '(1 2))
NIL
CL-USER 20 : 3 > (dotted-pair-p '(1 2 3))
NIL
我尝试检查 length=2 是否出错:
CL-USER 28 : 1 > (= (length (cons 2 3)) 2)
Error: In a call to LENGTH of (2 . 3), tail 3 is not a LIST.
【问题讨论】:
-
还要注意,所有正确的列表都是特定形式的点对。
-
看看我的回答,想想两者有什么不同。
length将假设有一个空列表。这就是它知道停止的方式。 -
(= (length (cons 2 3) 2))应该是(= (length (cons 2 3)) 2)。
标签: list lisp common-lisp predicate