我目前正在努力使用该函数来过滤值。
(defun filter (operator val sequence)
(if (funcall operator val (first sequence))
(filter (function operator) val (rest sequence))
(cons (list (first sequence))
(filter (function operator) val (rest sequence)))))
调用此函数
(filter (function >) 6 '(5 6))
给
*** Eval error *** Symbol's function definition is void: operator
不过,此代码片段效果不错。
(defun example (lhs rhs operator)
(funcall operator lhs rhs))
(example 4 5 (function +))
=> 9
我的猜测是该函数会忘记最初使用哪个函数,但是我不知道出了什么问题,朝正确方向的一些指针将不胜感激!
错误消息Symbol's function definition is void: operator
引用此行:
(filter (function operator) val (rest sequence))
您正在尝试访问一个名为的函数operator
,该函数不存在,因为operator
它只是一个函数参数(普通变量)。(此参数碰巧绑定到函数值,但这无关紧要。)
这应该解决它:
(filter operator val (rest sequence))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句