Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lisp 如何对列表应用特殊运算符?_Lisp_Common Lisp - Fatal编程技术网

Lisp 如何对列表应用特殊运算符?

Lisp 如何对列表应用特殊运算符?,lisp,common-lisp,Lisp,Common Lisp,以下试验被拒绝: CL-USER> (apply 'and '(t t t)) ; Evaluation aborted on #<CCL::CALL-SPECIAL-OPERATOR-OR-MACRO #x3020013A1F3D> CL-USER>(应用“和”(t)) ; 评估在上中止# 我的第一个回答是试图将对和特殊运算符的调用封装到lambda中,或者定义我自己的定义,但当然它无法工作。因为这将导致调用的应用函数和&rest参数上的。。。您将如何解决此问题?请改用该

以下试验被拒绝:

CL-USER> (apply 'and '(t t t))
; Evaluation aborted on #<CCL::CALL-SPECIAL-OPERATOR-OR-MACRO #x3020013A1F3D>
CL-USER>(应用“和”(t))
; 评估在上中止#

我的第一个回答是试图将对
特殊运算符的调用封装到lambda中,或者定义我自己的定义,但当然它无法工作。因为这将导致调用
应用
函数和&rest参数上的
。。。您将如何解决此问题?

请改用该函数

(every #'identity '(t t t))  -> t
不能使用特殊运算符

下一个解决方案:

(reduce (lambda (a b) (and a b))
        '(t t t)
        :initial-value t)

不要对列表操作使用“应用”。使用REDUCE。

抱歉,它似乎不起作用?CL-USER>(每个‘和’(t)’(t));在#上中止了评估。我在那个上面加了-1,因为它不起作用,只要你不提供一个有效的例子。@yvesBaumes Try(每个#'标识'(t t t))都有一些文档。@yves Baumes:每个序列都需要一个参数的谓词。好的,谢谢。我没有先得到它。我删除了a+1的-1,并接受了您的答案!:-)也要考虑<代码>(不(查找NILList))或<代码>(不(成员NILList))< /COD>。代码>查找
也适用于向量。