💡
原文中文,约2700字,阅读约需7分钟。
📝
内容提要
本文探讨了Common Lisp的变量机制,比较了Lisp-1与Lisp-2的区别,解释了绑定、词法作用域与动态作用域的原理及其混合使用。Common Lisp的函数与数据命名空间分离,词法作用域在函数定义时确定,而动态作用域依赖于调用链。通过示例展示了两种作用域的不同表现。
🎯
关键要点
- 本文探讨了Common Lisp的变量机制,比较了Lisp-1与Lisp-2的区别。
- Common Lisp的函数名字空间和数据的名字空间是分离的。
- 绑定是变量名与对象的映射关系,作用域决定了哪个变量绑定了哪个存储单元。
- 词法作用域是静态作用域,变量名只能在函数或代码区域内存在。
- 动态作用域的变量拥有全局的绑定栈,局部变量会创建新的绑定并压入栈中。
- Common Lisp使用词法作用域,示例代码展示了其行为。
- 使用special函数可以让Common Lisp中的变量具备动态作用域。
- 可以混合使用词法作用域和动态作用域,示例代码展示了这一点。
➡️