Skip to content

Instantly share code, notes, and snippets.

@zhouqiang-cl
Created December 20, 2016 12:31
Show Gist options
  • Save zhouqiang-cl/30a809fc754beab8c61afa5cc430fcdf to your computer and use it in GitHub Desktop.
Save zhouqiang-cl/30a809fc754beab8c61afa5cc430fcdf to your computer and use it in GitHub Desktop.
common lisp 的环境
描述:
binding(绑定): binding 是对名字和实体建立连接. binding 可以在词法和动态环境中用特殊操作符创建
environment(环境): environment 是在求值过程中一系列的binding 的集合和其他信息.
环境的类型:
Global Environment(全局环境): global environment 包括了全局的变量操作符等,主要包括下面几个方面
1.动态变量和常量的绑定
2.函数,宏和特殊操作符的绑定
3.编译的宏
4.类型和类的名字
5.全局声明
Dynamic Environments(动态环境): 动态环境是执行 form 的时候建立的绑定, 主要包括下面几个方面
1.动态变量
2.active catch tag的信息
3.unwind-protect 建立的 exit points 的信息
4.active handlers 和 restarts 的信息
Lexical Environments(词法环境): form 所在的词法作用域的环境, 主要包括以下几个方面
1.词法变量和符号宏(符号宏指代替其他form的符号)
2.函数和宏的绑定
3.block tags 的绑定
4.go tags 的绑定
5.声明信息
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment