let、eval 和 quote 的行为
Behavior of let, eval, and quote
我试图了解 let
的行为。
为什么 case2 会报错?
;; case1: worked fine.
(let ((NF 5)) NF)
5
;; case2: got an error
(let ((NF 5)) (eval 'NF))
error: The variable NF is unbound
EVAL
无法访问词法变量。 CLHS 表示:
Evaluates form in the current dynamic environment and the null lexical environment.
如果您声明变量 special
它将起作用,因为它执行的是动态绑定而不是词法绑定。
(let ((NF 5))
(declare (special NF))
(eval 'NF))
5
我试图了解 let
的行为。
为什么 case2 会报错?
;; case1: worked fine.
(let ((NF 5)) NF)
5
;; case2: got an error
(let ((NF 5)) (eval 'NF))
error: The variable NF is unbound
EVAL
无法访问词法变量。 CLHS 表示:
Evaluates form in the current dynamic environment and the null lexical environment.
如果您声明变量 special
它将起作用,因为它执行的是动态绑定而不是词法绑定。
(let ((NF 5))
(declare (special NF))
(eval 'NF))
5