0

我想创建一个函数:OP from i=nto p = f(i) OP is a binary operator

这是我的功能

(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 是开始,p 是结束

打电话给我

(sigmaOP (lambda (x) (* 2 x)) '+ 1 3)

但它不起作用 o 参数不被视为运算符。如果我删除了这个功能o,而是有+ or *,......

谢谢

4

1 回答 1

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)
于 2012-09-27T10:05:45.037 回答