我正在阅读SICP,又出现了绑定变量和自由变量的话题。然而,我对此感到困惑。术语“绑定变量”仅适用于形式参数变量吗?此外,文本还指出过程定义“绑定”其形式参数。这让我感到困惑,因为有些人说我们将值“绑定”到变量。显然,当我们谈论不同类型的变量时,该术语似乎意味着不同的事物。有人可以澄清什么是绑定变量以及绑定的含义吗?最后,与绑定变量相比,什么是自由变量?所有这些与范围有何关系?
只有两种类型的变量。全局和词汇。实际上,您可以将 global 视为词法范围的可变根,在这种情况下,只有一种类型的变量。
绑定变量是当前过程的形式参数,其他所有内容(无论是全局变量还是先前嵌套调用的绑定变量)都是自由变量。
Example:
(lambda (x)
(let ((y (+ x x))) ; + is free x is bound
(+ x y))) ; + and x is free, y is bound
记住let
是语法糖,所以它实际上与此相同:
(lambda (x)
((lambda (y)
(+ x y)) ; + and x is free, y is bound
(+ x x))) ; + is free x is bound
在内部 lambda 中y
作为绑定变量+
and x
免费。在外层 lambda 中x
是有界的并且+
免费。+
可能是全球性的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)