【发布时间】:2011-12-29 00:12:52
【问题描述】:
我的代码如下所示:
(eval `(setf (fdefinition name-funct)(lambda ............)))
为了创建我的函数,我使用了引号...但是 name-funct 是一个变量...如果我使用引号,我如何才能对解释说?是否存在做我想做的事的方法?
* 编辑 *
用逗号我有这种情况
Error: The variable REAL-NAME is unbound.
所以我需要 name-funct 的内容必须是我创建的 lambda 的名称。但是使用 Greg Hewgill 向我建议的逗号运算符,Lisp 会查找 name-funct 的内容,它是实名的,就像另一个变量一样。
【问题讨论】:
-
你想做什么?
real-name是什么?为什么你认为你需要eval? -
我看了你最近在这里提出的一系列问题,我的印象是你的问题越来越离奇了。我建议你应该问一个关于你想要达到的目标的正确方法的问题,因为我强烈怀疑你现在是否走在正确的轨道上。
-
完全不清楚您需要
eval和反引号做什么。只需直接使用setf。如果您使用反引号从 s 表达式构建 lambda 函数,请考虑改用 lambda 组合它,或者至少将eval和反引号直接包裹在lambda周围,而不是setf。 -
我的意思是这样的:
(setf (fdefinition name-funct) (eval `(lambda ............))) -
哇,在 Lisp 中不应该出现分段错误,除非您明确降低了安全级别(即声明了
(optimize (safety 0)))。您使用的是哪种 Lisp 实现?