如何执行存储在变量中的Lisp程序?基于给定代码的扩展实现需求
如何执行存储在变量中的Lisp程序?
嘿,这事儿其实挺直接的——Lisp里专门提供了eval函数干这个!它的作用就是把传入的S表达式当作可执行代码去求值。
针对你的需求,只需要两步:先给变量n赋值为1,再用eval执行prg里存储的表达式就行。完整代码如下:
(setf prg '(+ 1 n)) ; 定义存储的程序 (setf n 1) ; 将n设置为1 (print (eval prg)) ; 执行并打印结果,最终会输出2
简单拆解下逻辑:
setf n 1先把变量n绑定到值1上,这样后面执行表达式时能找到它的具体值;eval prg会把prg里存的'(+ 1 n)表达式拿出来,当作正常Lisp代码运行,也就是计算(+ 1 1),得到结果2;- 最后用
print把执行结果输出。
要注意的是,如果没提前给n赋值,执行eval时会报错说变量未定义,所以一定要确保表达式里用到的变量都先完成绑定哦。
内容的提问来源于stack exchange,提问作者curiouscyberkid
相关产品推荐
相关产品推荐

