我不确定使用未在顶层定义的函数的最佳方法。
我创建了一个列表,称为*lambdas*
,是从用户的输入规范派生的主力lambda表达式。还有一个*args*
列表为每个lambda提供适当的参数。我想将每个lambda转换为一个函数,对其进行编译,将其应用于各自的参数,然后收集结果。
目前,我正在做(setf (symbol-value *dummy-fn-name*) (compile nil lambda))
作为暂存每个函数的临时场所,随后是(apply (symbol-value *dummy-fn-name*) args)
以获取每个结果,但是这很可能是骇客。是否有使用lambda的更直接的方法?对这些功能进行apply
编辑后,无需再挂断。
答案 0 :(得分:2)
如果只是暂时的,则无需将其放入全局变量中:
(let ((func (compile nil lambda)))
(apply func args))
或者简单地
(apply (compile nil lambda) args)