Lisp 函数与二进制运算
我想创建一个函数:OP fromLisp 函数与二进制运算,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,取而代之的是+或*, 谢谢运
I=n
top=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)