25个特殊操作符(special operator)
1. CLHS (Common-Lisp-Hyper-Spec)
http://www.lispworks.com/documentation/HyperSpec/Body/03_ababa.htm
2. 为何特殊
(截图自 《Practical Common Lisp》 4.4节
即: 特殊操作符有自定义的求值规则
是如何自定义的呢?
3. 为什么重要?
可以这样理解:
《The Root of Lisp》告诉我们:Lisp的根本是7个primitive : quote, atom , eq , cond , car , cdr , cons
而最核心的lisp 运算包括: read , eval . 分别对应着 读取器、求值器
(截图自 《Emacs之魂》(六) -宏与元编程)
可见,Macro果然是根据部分符号(some symbols)、去构建一些语法树(Tree of symbols)
Special form 是有着特殊的语法、特殊的求值规则、或者两者都有的form。 它可能会操作求值的环境、控制流。
Special operator 可以访问当前的词法环境(局部作用域)、动态环境(全局作用域)。 每个special operator定义了它所在修饰的S-表达式会被如何计算。
部分special operator会在求值subforms时创建新的词法、动态环境。比如:`block`