我知道我可以检查列表列表是否只包含这样的空列表
CL-USER> (null (find-if (lambda (item) (not (null item))) my-list))
其中my-list
是列表清单。
例如:
CL-USER> (null (find-if (lambda (item) (not (null item))) '(nil (bob) nil)))
NIL
CL-USER> (null (find-if (lambda (item) (not (null item))) '(() () ())))
T
但是,在Lisp中执行此操作是不是更简单,更简单?如果是这样,怎么样?
答案 0 :(得分:11)
高阶函数every
采用谓词函数和列表,如果谓词对列表中的每个元素都返回true,则返回true。
所以你可以这样做:
(every #'null my-list)
答案 1 :(得分:1)
(find-if #'identity list)
(not (find-if-not #'null list))
请参阅Common Lisp HyperSpec以获取列表和序列的完整功能列表。