什么是最好的Scheme解释器或编译器?

adh*_*lon 45 scheme

大家好,我想开始使用Scheme,我有两个问题.首先,您是否建议使用Scheme的解释器或编译器?为什么?第二,你会推荐哪种解释器或编译器,为什么?谢谢!

Sha*_*aun 30

我知道你已经接受了答案,但对于这个问题的未来访问者,我推荐鸡计划.它往往比mzscheme 产生小的可执行文件.以下面的hello world应用程序为例:

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

(say-hello "Earthling")
Run Code Online (Sandbox Code Playgroud)

用mzc编译--exec mztest hello.scm:3.3M

用csc hello.scm -o ctest编译:16k

如果您在图书馆支持之后,Chicken提供了Egg Unlimited,这就像是针对mzscheme的PlaneT(或者是ruby的宝石).

  • AFAIK mzscheme创建一个静态链接的可执行文件,而鸡计划动态链接到libchicken. (13认同)
  • 使用选项`-static`,您还可以从鸡编译器获取静态链接的可执行文件.对于`mzc`,需要在源的开头添加`#langate`声明.然后`mzc --exe mztest hello.scm`给出一个4.6M的可执行文件.而`csc hello.scm -o cktest`给出了一个3.2M的可执行文件. (8认同)
  • 没错,尝试在没有Chicken Scheme的平台上运行16k文件.它是动态链接的. (7认同)
  • 鸡拥有.我实际上也将它用于实际工作.并且不要忘记Gambit-C. (4认同)

Mic*_*yan 28

对于初学者,我强烈推荐DrRacket(以前称为Dr. Scheme),因为它为您提供了一个非常好的工作环境,支持Scheme的许多方言,并提供非常好的失败和调试信息.我相信Scheme的大多数实现都是解释器,尽管有可能有一个编译器.

如果你是像我这样的命令行瘾者,你可以考虑直接运行球拍解释器,这与Dr. Racket基本相同,但没有图形环境和命令行界面.或者,启动源文件#! /usr/bin/env racket并使其可执行chmod +x source.rkt.

  • 实际上有更多的大牌Scheme编译器而不是解释器:ikarus,chez(非免费版),开局,鸡,bigloo.事实上,mzscheme/DrScheme在当前版本中是JITted.请参阅http://en.wikipedia.org/wiki/Category:Scheme_compilers (4认同)
  • Scheme博士是我用过的最完整的口译员之一.对于陷入命令行的初学者非常有用,并且无法将神秘的错误消息转换为代码错误的地方. (2认同)

小智 10

我推荐Gambit-C方案:

  • 它符合R5RS标准.
  • 它有一个解释器和一个编译器.您也可以编译为ANSI C.
  • 它是开源的.
  • 它是便携式的.(它可以在Linux,Windows,Mac OS X甚至iOS上运行.)
  • 它具有简单的外部功能接口(FFI).

粗略的检查显示,鸡似乎并不令人满意,而Bigloo可能是一个重要的竞争者.但我不能过多评论他们.

  • 您对Chicken Scheme感到不满意的是什么? (5认同)
  • 不能回答OP,但是在我选择最近使用哪一个时尝试的少数(一如既往,完全无意义)基准测试,Gambit绝对拥有鸡的性能.看起来Gambit的平均速度要快两倍.鸡的GC也慢了很多,比如十次或者更慢. (2认同)

Jer*_*fin 9

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

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


ine*_*ine 6

PTL Scheme 已更名为 Racket ( http://racket-lang.org/ ),但它仍然几乎相同。Dr. Racket 是一个非常漂亮的带有 shell 的开发环境,要在Scheme 中编写您所需要的一切都位于#lang scheme文件的顶部。