我试图了解 Scheme 中的引用现象是如何工作的。特别是,我想了解引用术语的自由变量何时绑定。
例如,当我写
(define q 'a)
(define a 42)
(eval q)
它返回 42。因此我推断绑定时间是在运行时。但是在这种情况下,为什么这段代码会失败
(let ((q 'a))
(let ((a 42))
(eval q)
)
)
并返回
unbound variable: a
有人可以解释一下什么是引用术语的绑定时间模型(例如可以与 MetaOCaml 相媲美吗?(我不这么认为))以及定义和让之间的区别?