我试图了解 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 说:
如果您声明变量 special
它将起作用,因为它执行动态绑定(bind)而不是词法绑定(bind)。
(let ((NF 5))
(declare (special NF))
(eval 'NF))
5
关于lisp - let、eval 和 quote 的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27907764/