Lisp 几种方言的一些区别

Common Lisp

规模太大,文档太厚,让人望而生畏。继承了 Lisp 50年的许多精华, 还有糟粕.

精华: 完整的 Lisp 实现, 庞大完整的库. 生产级的设计.
支持 Read Macro, package 命名空间。

糟粕:

  1. 符号名称默认不分大小写,虽然可以用 ‘| 。。 |’ 的形式创建小写符号,但太难看了。

  2. 没有定义正则表达式的支持,这个功能是如此的普通,致使大量的非官方库被使用,并因此了很多争论。

  3. 大量冗余的函数库。

  4. 文档古旧,社区松散。大部分的文档和书籍都是10年以前的。社区代码的发布推广,基本上还是靠人工宣传。太多分散的网站和平台。让社区很多人做了很多相同的无用功。

  5. 没有出色的应用。好的语言如果没有好的应用,谁能相信呢?

Scheme

文档少,学院气氛浓厚,缺乏应用。不适合生产应用。
锁定了 Read Macro 语法,语法分化倾向明显。不支持 Pakcage,不支持函数和变量命名空间的分离。不支持 Unicode。

如果有一些好的文档,也许能让更多人认识到这门语言精巧,优美的设计。

Emacs Lisp

没有语言基础的入门资料,假定每个人都学过 Lisp。不支持 Pakcage,只能通过命名约定的方式建立模块化管理机制。隐藏在一个编辑器之中。

也锁定了 Read Macro。

优点:符号区分大小写。文档丰富细致,没有实现分化的倾向。大量优秀的文本处理方面的函数和功能完整的正则表达式实现。

不适合批量文件处理,缓存是文本的表现形式。

Clojure

用 Java 实现的 Lisp 解释器。锁定了 Read macro, 大量分化的语法,减弱了代码和数据结构之间的转换能力。

优点:共享 Java 的库,吸取了很多语言的优点,命名风格简洁清晰,并发支持出色。已经有了 C# 和 JavaScript 的实现。

在语言表达能力上做了很多妥协,发展迅速。对 Lisp 的推广作用很正面。

你可能感兴趣的:(Lisp 几种方言的一些区别)