2008-08-22

Scheme笔记 -- 6

Lisp之特殊之处在于过程和数据之间其实没有什么区别,过程可以作为数据,数据也可以作为数据。当然这归功于该语言中过程实际上是一等公民,这再其它动态语言如Python, Ruby中也很常见。但Lisp的数据和过程都可以用List来表示,这种惊人的统一性在看似古怪的表面之下有着及其迷人的魅力。

Scheme只有一个很小的内核,除了最基本的求值规则之外几乎没有任何强加的规则。语言的设计者意识到,任何一门语言都不可能实现所有程序员都希望的特性,于是他们为程序员提供了扩展该语言的手段 -- 程序员可以自定义语法,最大程度的重用解释器内核。

Lisp在诞生50年之后仍然在不断进化,并形成一个大家族。这也足以证明该语言强大的生命力。学Lisp后会对以下概念有更深入的理解:
1. 过程、数据
2. closure,tail call, FP
3. macro

Lisp macro是其魅力的主要源泉之一,它提供了强大的抽象表达方式,并很容易用来书写Code Generator等等。至于Scheme中特有的continuation,可以用来实现任意的流程控制。或许太过强大,但绝对是Scheme语言里一颗璀璨的明珠。

标签:

0 Comments:

发表评论

<< Home