假设我有一个特殊的 var:
(defvar x 20)
然后我执行以下操作:
(let ((x 1)) (eval '(+ x 1))
评估为 2。
根据 CLHS,eval “在当前动态环境和空词法环境中评估形式”。所以,我希望得到 21 而不是 2。
我错过了什么吗?
现在,如果我没有符号 y 的动态绑定,则评估
(let ((y 1)) (eval '(+ y 1))
我得到条件:“变量 Y 未绑定”,这是有道理的,因为 y 没有动态绑定。
注意:我使用的是 SBCL 1.0.57
提前感谢您的帮助!