【问题标题】:Working with Constructed (non-toplevel) Functions in Common Lisp在 Common Lisp 中使用构造(非顶层)函数
【发布时间】:2019-02-11 22:40:13
【问题描述】:

我不确定使用未在顶层定义的函数的最佳方式。

我创建了一个主力 lambda 表达式列表,称为 *lambdas*,它源自用户的输入规范。还有一个*args* 列表,为每个 lambda 提供适当的参数。我想将每个 lambda 转换为一个函数,对其进行编译,将其应用于各自的参数,然后收集结果。

目前,我正在将 (setf (symbol-value *dummy-fn-name*) (compile nil lambda)) 作为保存每个函数的临时位置,然后使用 (apply (symbol-value *dummy-fn-name*) args) 来获取每个结果,但这可能属于 hack。有没有更直接的方式来使用 lambda?函数在apply-ed 之后就不需要闲逛了。

【问题讨论】:

    标签: function lambda common-lisp


    【解决方案1】:

    如果它只是临时的,则不需要将其放入全局变量中:

    (let ((func (compile nil lambda)))
      (apply func args))
    

    或者干脆

    (apply (compile nil lambda) args)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2020-02-26
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      相关资源
      最近更新 更多