【发布时间】:2013-08-21 15:48:27
【问题描述】:
flet 的问题是其中绑定的函数必须内联定义。换句话说,没有办法做到这一点:
(new-flet ((a (lambda (f x)
(funcall f (* x 2))))
(b (function-generator)))
(a #'b 10))
我考虑自己定义这样一个宏,但问题是flet 似乎是唯一设置局部函数值的方法。 symbol-function 始终只获取全局定义,function 不能与 setf 一起使用。如果有的话,任何人都知道如何相当干净地完成这项工作?
【问题讨论】:
-
我想你忘了
labels。 -
我没有忘记
labels。我的问题与相互递归的函数绑定没有任何关系。同样的问题也适用于flet和labels。 -
对不起,我猜我太习惯 Scheme 了。
-
我不明白你的问题是什么。您是否希望能够在不使用 flet 的情况下覆盖该函数范围之外的函数内部的函数调用? Let 和 funcall 是您要找的吗?
标签: lisp common-lisp