关于Lisp的一点点

以后写的语言相关应该主要是Ruby(也许还有少数的C)了,所以在这里先记录一点关于Lisp的东西。

首先是一个小故事:

在 ILC 2002 大会上前Lisp大神,当今的Python倡导者Peter Norvig,由于某些原因,做一个类似于马丁路德在梵蒂冈宣扬新教的主题演讲,因为他在演讲中大胆地声称Python就是一种Lisp。
讲完后进入提问环节,出乎我意料的是,Peter点了我过道另一侧,靠上面几排座位的一个老头,他衣着皱褶,在演讲刚开始的时候踱步进来,然后就靠在了那个座位上面。
这老头满头凌乱的白发,邋遢的白胡须,像是从旅行团中落下的游客,已经完全迷路了,闲逛到这里来歇歇脚,随便看看我们都在这里干什么。我的第一个念头是,他会因为我们的奇怪的话题感到相当失望;接着,我意识到这位老头的年纪,想到斯坦福就在附近,而且我想那人也在斯坦福 —— 难道他是……
“嗨,John,有什么问题?” Peter说。
虽然这只是10个字左右的问题,我不会假装自己记住了Lisp之父约翰麦卡锡说的每一个字。他在问Python程序能不能像处理数据一样,优雅地处理Python代码。
“不行。John, Python做不到。” Peter就回答了这一句,然后静静地等待,准备接受教授的质疑,但老人没有再说什么了。

 然后是Lisp的七条公理(基本运算符):

1. (quote x) --> x
2. (atom x) --> t or ()
3. (eq x y) --> t or ()
4. (car x) --> x1 ...the first element of x
5. (cdr x) --> xr ...the rest elements of x
6. (cons x y) --> (xe ye) ...all elements of x and y
7. (cond (p1e1) (p2e2)...(pnen)) --> et ...en of the condition pn is t.

 再然后是个人喜欢的Lisp现代分支:Racket。官网:http://racket-lang.org/

如果了解一些逻辑或者计算机理论的相关基础,到此应该已经能看出,Lisp的独特之处所在。

Lisp不是作为一种计算机语言设计的,而是基本逻辑的表达。某种意义上,这是Lisp之所以小众的理由。

猜你喜欢

转载自tempwall.iteye.com/blog/1798462