2

以下测试被拒绝:

CL-USER> (apply 'and '(t t t))
; Evaluation aborted on #<CCL::CALL-SPECIAL-OPERATOR-OR-MACRO #x3020013A1F3D>

我的第一个回复是尝试将对and特殊运算符的调用封装到 lambda 中或定义我自己的定义,但它当然行不通。因为它会导致在&rest 参数上调用apply函数......你将如何解决这个问题?'and

4

1 回答 1

6

请改用 EVERY 函数。

(every #'identity '(t t t))  -> t

您不能应用特殊运算符。

下一个解决方案:

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

不要将 APPLY 用于列表操作。使用减少。

于 2012-04-22T15:28:55.917 回答