Lisp 函数与二进制运算

Lisp 函数与二进制运算,lisp,Lisp,我想创建一个函数:OP fromI=ntop=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是开始,p是结束 我用电话 (sigmaOP (lambda (x) (* 2 x)) '+ 1 3) 但它不起作用 O参数不算作运算符。 如果我删除了o,取而代之的是+或*, 谢谢运

我想创建一个函数:OP from
I=n
to
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是开始,p是结束

我用电话

(sigmaOP (lambda (x) (* 2 x)) '+ 1 3)
但它不起作用 O参数不算作运算符。 如果我删除了
o
,取而代之的是
+或*,


谢谢

运算符也是一个要调用的函数,因此您需要在
o
前面加上
funcall
,或者在调用中将其用作参数,例如减少。你在想这样的事情吗

(defun sigmaOP (f o n p)
  (reduce o
    (loop for i from n to p
          collect (funcall f i))))
电话:


我尝试了你的代码,但它不起作用。也许我的函数调用不好。如何调用此函数以将运算符作为参数简单传递为+或“+?@guillaume:请参见我的编辑。由于
o
是一个局部变量,我们不需要函数quote it.Argh。总是有Lisp-2的问题。。。我更喜欢搞阴谋。谢谢你的编辑!
(sigmaOP (lambda (x) (* 2 x)) #'+ 1 3)