CLISP 中的意外评估结果
Unexpected eval result in CLISP
我运行遵循CLISP的代码,但结果对我来说很奇怪。
(setq a 'b)
(setq b 'c)
(setq c 'd)
(setq d 8)
(eval a)
(eval c)
(eval (eval a))
最后三行的输出是:
C
8
D
我如何理解输出?
最后两行怎么会有不同的输出?
请帮忙解释一下,万分感谢!
评价(eval c)
- 获取变量值
c
-> 符号 D
- 用符号
D
调用 EVAL -> 数字 8
评价(eval (eval a))
- 获取变量值
a
-> 符号 B
- 使用符号
B
调用 EVAL -> 符号 C
- 使用符号
C
调用 EVAL -> 符号 D
Lisp 的一些基本求值规则
- 符号计算为其值
- 一个数字计算为自身
- 列表
(foo-function arg)
首先计算参数,然后使用计算的参数 调用函数foo-function
- 一个列表
(quote something)
returnssomething
(无论它是什么)原样
我运行遵循CLISP的代码,但结果对我来说很奇怪。
(setq a 'b)
(setq b 'c)
(setq c 'd)
(setq d 8)
(eval a)
(eval c)
(eval (eval a))
最后三行的输出是:
C
8
D
我如何理解输出?
最后两行怎么会有不同的输出?
请帮忙解释一下,万分感谢!
评价(eval c)
- 获取变量值
c
-> 符号D
- 用符号
D
调用 EVAL -> 数字 8
评价(eval (eval a))
- 获取变量值
a
-> 符号B
- 使用符号
B
调用 EVAL -> 符号C
- 使用符号
C
调用 EVAL -> 符号 D
Lisp 的一些基本求值规则
- 符号计算为其值
- 一个数字计算为自身
- 列表
(foo-function arg)
首先计算参数,然后使用计算的参数 调用函数 - 一个列表
(quote something)
returnssomething
(无论它是什么)原样
foo-function