Common Lisp:判断列表是否包含嵌套列表的谓词?

时间:2015-10-28 18:09:52

标签: lisp common-lisp

如果列表有子列表,我需要一个返回true的谓词,否则返回false。

我写了一个实现它的函数(下面)。我想知道这样的谓词是否已经存在?

(defun hasSublistp (lst)
    (cond ((null lst) nil)
          ((listp (first lst)) t)
          (t (hasSublistp (rest lst)))))

2 个答案:

答案 0 :(得分:5)

这应该可以解决问题:

? (some #'listp '(1 2 3 4 5))
NIL
? (some #'listp '(1 2 (3 4) 4 5))
T
? (some #'listp '(1 2 (3 4) (4 7) 5))
T

答案 1 :(得分:5)

我认为没有一个函数完全用于此目的,但是:

(some #'listp my-list)

您可以在hyperspec中找到有关高阶函数some的更多信息。