以下测试被拒绝:
CL-USER> (apply 'and '(t t t))
; Evaluation aborted on #<CCL::CALL-SPECIAL-OPERATOR-OR-MACRO #x3020013A1F3D>
我的第一个回复是试图将对和
特殊运算符的调用封装成一个lambda或者定义我自己的定义,但是当然不行。因为它会导致在 &rest 参数上为 'and
调用 apply
函数...您将如何解决这个问题?
最佳答案
改用函数 EVERY。
(every #'identity '(t t t)) -> t
您不能应用特殊运算符。
下一个解决方案:
(reduce (lambda (a b) (and a b))
'(t t t)
:initial-value t)
不要将 APPLY 用于列表操作。使用 REDUCE。
关于lisp - 如何将特殊运算符应用于列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10268842/