【发布时间】:2018-08-23 09:46:37
【问题描述】:
我运行以下 CLISP 代码,但结果对我来说看起来很奇怪。
(setq a 'b)
(setq b 'c)
(setq c 'd)
(setq d 8)
(eval a)
(eval c)
(eval (eval a))
最后三行的输出是:
C
8
D
我如何理解输出?
最后两行怎么会有不同的输出?
请帮忙解释一下,非常感谢!
【问题讨论】:
标签: lisp common-lisp eval
我运行以下 CLISP 代码,但结果对我来说看起来很奇怪。
(setq a 'b)
(setq b 'c)
(setq c 'd)
(setq d 8)
(eval a)
(eval c)
(eval (eval a))
最后三行的输出是:
C
8
D
我如何理解输出?
最后两行怎么会有不同的输出?
请帮忙解释一下,非常感谢!
【问题讨论】:
标签: lisp common-lisp eval
评估(eval c)
c的值->符号D
D -> 编号8调用EVAL
评估(eval (eval a))
a的值->符号B
B -> 符号 C 调用 EVAL
C调用EVAL -> 符号D
Lisp 的一些基本评估规则
(foo-function arg) 列表首先评估参数,然后使用评估的参数调用函数 foo-function
(quote something) 原样返回something(不管它是什么)【讨论】:
c的结果是c的值。 (quote c) 的结果是符号 c。 b 的结果是符号c。请注意,您的结果中没有引用值 - 结果中有符号和数字。
eval 作为函数、quote 作为运算符...