我想创建一个功能:OP从i=n
到p = f(i)
OP是二元运算符
这是我的功能
(defun sigmaOP (f o n p)
(loop for i from n to p do
(let (val (o (val (funcall f i))))
)
val
)
f是一个功能 o是运营商 n是开始和结束
打电话给我使用
(sigmaOP (lambda (x) (* 2 x)) '+ 1 3)
但它不起作用
o参数不被视为运算符。
如果我删除o
而不是+ or *,
...
由于
答案 0 :(得分:0)
运营商也是一种呼叫功能,因此您需要在o
之前加funcall
,或将其用作呼叫中的参数,例如减少。你在想这样的事吗?
(defun sigmaOP (f o n p)
(reduce o
(loop for i from n to p
collect (funcall f i))))
呼叫:
(sigmaOP (lambda (x) (* 2 x)) #'+ 1 3)