Lisp 几种方言的一些区别

本文对比分析了Common Lisp、Scheme、Emacs Lisp及Clojure等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 的推广作用很正面。

转载于:https://my.oschina.net/u/563463/blog/164248

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值