Lisp 如何判断列表是否包含零?

Lisp 如何判断列表是否包含零?,lisp,common-lisp,Lisp,Common Lisp,我有以下清单: (X O X O X NIL X NIL O) 如果我执行(查找'x(xoxoxnilxnilo))它返回x,因此我知道列表包含x。但是如果我做了(find nil(xo X O X nil X nil O))我得到了nil,这是毫无意义的,因为即使我的列表中没有nil,我也会得到nil 我如何判断我的列表是否包含NILs?是否需要此工作 (or (map (lamdba (x) (eq? x nil)) '(X O X O X NIL X NIL

我有以下清单:

(X O X O X NIL X NIL O)
如果我执行
(查找'x(xoxoxnilxnilo))
它返回
x
,因此我知道列表包含
x
。但是如果我做了
(find nil(xo X O X nil X nil O))
我得到了
nil
,这是毫无意义的,因为即使我的列表中没有
nil
,我也会得到
nil


我如何判断我的列表是否包含
NIL
s?

是否需要此工作

(or 
  (map (lamdba (x)
    (eq? x nil))
       '(X O X O X NIL X NIL O)))
我现在没有安装CL,但我认为它会工作。(或者在CL中是这样工作的,对吗?或者有
功能吗

编辑:

等等,零算假,对吗

(apply and '(X O X NIL))
;Or 
(all '(X O X NIL))
;Whichever works in CL.
你可以用


不是你要找的

下面是一个例子:

 (reduce #'(lambda (a b) (or a b))
   (mapcar 'not '(1 2 3 4)))

它的处理器效率可能不如其他版本,但我可能会像用英语说的那样写:

(some #'null '(X O X O X NIL X NIL O))

eq?不是CL函数。仅供参考。:-)对不起,我习惯了Haskell和Scheme。
任何
函数都是Ken建议的
某些
。而
应用和
将不起作用,因为
是一个宏,但
应用
只能与函数一起使用。也没有
所有
函数,而是需要谓词的
每个
notevery#“identity
与您的
all
示例最相似,但我认为
some#“null
比这更清楚。您的“alternative”注释是什么意思?该表达式返回
(NIL-NIL-NIL)
,而
什么也不做(除非列表为空),因为它只传递了一个值。实际上,CL中有三个谓词仅对
NIL
为真
not
用于将参数解释为布尔值的情况,
endp
用于列表中的参数(如果不是列表,则会发出错误信号),
null
是对
nil
的常规检查,没有特定的语义。@Ken:Doh。那是我的错。
(some #'null '(X O X O X NIL X NIL O))