如憋屎一样的标准r7rs

如憋屎一样的标准r7rs

御坂黒子御坂黒子

scheme这个语言表面上看起来很好,为什么不能流行,连隔壁的commonlisp,clojure们都比她更成功,并非语言的本身问题,而是它的标准。

我们看看别的语言,像是c++,c++11,c++17不断更新,即使人们为了标准而争论,最终还是能把标准确定下来,人们都用统一的一套语言交流;一些新兴的语言比如rust也是不断的完善自己。到头来,这种乱象只能在scheme社区看见。

让我们来看一下那些愚蠢的人类究竟干了什么坏事吧:首先,scheme的实现有很多,但是它们大多遵循1998年发布的r5rs标准,这很统一,很好。然而,你仅仅支持r5rs的话什么也干不了,更不可能商业化。

一种办法是在标准中加入更多的功能,但是这与scheme简洁至上的理念背道而驰,于是,各个实现开始折腾自己的库,每个实现都有自己的一套库,都觉得自己的是最好的,谁也不鸟谁。

但是,我们的A同学看了某某某实现的gui库后, 觉得太辣鸡,于是自己卷起袖子自己干,终于完成了一套gui库,可惜的是,不久就太监了。后来的人看着海量的库,纠结着到底应该用哪一个,或许还在纠结到底用哪个方言的时候,用别的语言的人已经差不多写好了。

这就是scheme社区独有的乱象,如wangyin所说的the new language problem。

即使是在racket如此统一的语言里面,这种乱象也不能避免,单单说,实现generic function的库起码也有过上百个(racket对generic function支持不好)。

更严重的是,大多数库都是人们一时兴起写的,有的文档残缺甚至连文档都没有,还有的连test都失败了。

r6rs为了更强大,加了好多东西,可是人们意见不一,因为r6rs破坏了简洁性。

特别是由dybvig kent 所提出的卫生宏系统syntax-case,实现起来很复杂,于是大家都觉得kent做的不好,很多实现就干脆不支持r6rs和syntax-case。

In the future, we plan to deploy a new portable virtual machine and implement a module system.  We also plan to finish support for R5RS and R7RS, but we will not be providing support for R6RS. Other potential projects can be found on the tasks page. 

(mit scheme)

 CHICKEN is a compiler for the Scheme programming language. It produces portable and efficient C and supports the R5RS and R7RS (work in progress) standards, and many extensions. It runs on Linux, OS X, Windows, many Unix flavours, and aims to be...

(chicken scheme)

没有syntax-case就没有非卫生的宏,于是大家都开始各搞各的的宏系统。

回到我们的标题,于是r7rs为了改变这一切,横空出世了。

r7rs -small很快就推出了,但是,残念,大家都懂的。

20 条评论