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`

 

posted on 2018-09-18 14:42  王家恒  阅读(696)  评论(0编辑  收藏  举报

导航