2010-03-26 96 views
38

大家好,我想开始使用Scheme,我有两个问题。首先,你会推荐使用解释器还是编译器来实现Scheme,为什么?其次,你会推荐哪种解释器或编译器,为什么?谢谢!什么是最好的Scheme解释器或编译器?

+0

我的问题与那些有点不同,但谢谢! – adhanlon 2010-03-26 20:31:33

+1

顺便说一句,作为一个“什么是最好”的问题,没有澄清细节,这个看起来非常主观。如果对单个最佳方案实现(针对所有目的和用例)达成一致,那么我们只有一个! – 2010-03-27 16:36:40

+0

绝对是一个有建设性的问题,比我更重要的人应该重新开放这个 – 2014-11-14 08:11:37

回答

24

对于初学者,我强烈建议DrRacket(以前称为Dr. Scheme),因为它给你一个非常好的工作环境,支持Scheme的许多方言,并提供非常好的故障和调试信息。我相信Scheme的大多数实现都是解释器,尽管可能有一个编译器在那里。

如果你是像我这样的命令行吸毒者,你可以考虑的另一种方法是直接运行racket解释器,这与Dr.Retet基本上是一样的,但没有图形环境和命令行界面。或者,使用#! /usr/bin/env racket开始源文件并使其可执行chmod +x source.rkt

+2

博士计划是我用过的最完整的口译员之一。对于在命令行中卡住并且不能将隐蔽错误消息转换为代码错误的初学者非常有用。 – ecounysis 2010-03-26 06:41:59

+3

其实还有比口译员更多的大牌计划编制者:ikarus,chez(非免费版),gambit,鸡,bigloo。实际上,mzscheme/DrScheme在当前版本中被打乱。见http://en.wikipedia.org/wiki/Category:Scheme_compilers – 2010-03-26 13:54:20

+0

我也是一个命令行的瘾君子,我一直在使用Dr. Scheme,但我也会试一试mzscheme。我也一直在使用gambit-c,对此有何看法? – adhanlon 2010-03-26 15:47:21

7

我建议不要担心它是作为编译器,解释器还是它们的组合来实现 - 特别是在开始时,帮助文件的质量(仅举一例)将远远超过它的实现方式。

至于哪一个,PLT Scheme是我最常使用的(目前为止)。

+1

感谢您的建议。我正在使用PLT计划,我非常喜欢它。 – adhanlon 2010-03-29 20:49:10

24

我知道你已经接受了答案,但对于未来这个问题的访问者,我推荐Chicken Scheme。它倾向于产生比mzscheme更小的可执行文件。看看下面的Hello World应用程序,例如:

(define (say-hello name) 
    (print (string-append "Hello, " name)) 
    (newline)) 

(say-hello "Earthling") 

编译时MZC --exec mztest hello.scm:3.3M

编译时CSC hello.scm -o CTEST:16K

而且如果你在图书馆支持后,鸡提供Eggs Unlimited,这就像PlazT对mzscheme(或宝石红宝石)。

+0

感谢您的建议。 – adhanlon 2010-03-28 02:19:56

+3

鸡拥有。我其实也可以用它来做实际的工作。别忘了关于Gambit-C。 – Jyaan 2010-10-22 05:42:35

+10

AFAIK mzscheme创建一个静态链接的可执行文件,而chicken scheme与libchicken动态链接。 – 2011-05-21 10:10:05

3

PTL计划已​​更名为球拍(http://racket-lang.org/),但它仍然几乎相同。 Dr.Retet是一个非常漂亮的开发环境,使用shell,并且在Scheme中编写所有需要的文件是在文件顶部的#lang scheme

8

我建议Gambit-C方案:

  • 这是R5RS符合的。
  • 它既有解释器又有编译器。您也可以编译为ANSI C.
  • 它是开源的。
  • 它便携。 (它运行在Linux,Windows,Mac OS X甚至iOS上。)
  • 它具有简单的外部函数接口(FFI)。

粗略的检查显示,鸡似乎不满意,而Bigloo可能是一个严重的竞争者。但我不能对他们发表太多评论。

+4

你有什么不满意的鸡计划? – 2013-05-09 14:38:10

+1

不能回答OP,但是在选择最近使用哪一个时,我尝试了很少(一如既往,完全没有意义)的基准,因此Gambit绝对拥有鸡的表现。看起来Gambit比平均速度快两倍。鸡的GC也很慢,像十次或更长。 – Leushenko 2014-07-07 03:15:27