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

Scheme 什么是最好的方案解释器或编译器?,scheme,Scheme,大家好,我想开始使用Scheme,我有两个问题。首先,您会建议对Scheme使用解释器或编译器吗?为什么?第二,对于Scheme,您会推荐哪个解释器或编译器,为什么?谢谢 对于初学者,我强烈推荐(原名Scheme博士),因为它为您提供了一个非常好的工作环境,支持Scheme的多种方言,并提供了非常好的故障和调试信息。我相信Scheme的大多数实现都是解释器,尽管可能存在编译器 如果你是像我一样的命令行瘾君子,你可以考虑的是直接运行解释器,这与ReBrand博士基本上是一样的,但是没有图形环境和命

大家好,我想开始使用Scheme,我有两个问题。首先,您会建议对Scheme使用解释器或编译器吗?为什么?第二,对于Scheme,您会推荐哪个解释器或编译器,为什么?谢谢

对于初学者,我强烈推荐(原名Scheme博士),因为它为您提供了一个非常好的工作环境,支持Scheme的多种方言,并提供了非常好的故障和调试信息。我相信Scheme的大多数实现都是解释器,尽管可能存在编译器


<>如果你是像我一样的命令行瘾君子,你可以考虑的是直接运行解释器,这与ReBrand博士基本上是一样的,但是没有图形环境和命令行接口。或者,用
#启动源文件/usr/bin/env racket
并使其可通过
chmod+x source.rkt

执行。我建议不要担心它是作为编译器、解释器还是它们的组合实现的——特别是从一开始,帮助文件的质量(例如)远比它的具体实现方式重要得多


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

我知道你已经接受了答案,但对于这个问题的未来访问者,我建议。它倾向于生成比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


如果您想获得库支持,Chicken提供了类似PlaneT for mzscheme(或gems for ruby)的功能。

PTL Scheme已重命名为Racket(),但基本相同。Racket博士是一个非常漂亮的开发环境,有一个外壳,要在Scheme中编写,您只需在文件顶部添加
#lang Scheme

我推荐Scheme:

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

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

Scheme博士是我使用过的最完整的口译员之一。对于那些在命令行中陷入困境,无法将神秘的错误消息转换为错误代码的初学者来说,这非常有用。实际上,大牌方案编译器比解释器多:ikarus、chez(非免费版本)、gambit、chicken、bigloo。事实上,mzscheme/DrScheme在当前版本中是JITted的。看,我也是一个命令行迷,我一直在使用Dr.Scheme,但我也会尝试一下mzscheme。我也用过一点gambit-c,你对此有什么想法吗?我的问题和那些有点不同,但是谢谢!顺便说一句,作为一个没有澄清细节的“什么是最好的”问题,这个问题似乎非常主观。如果在单个最佳方案实现上达成一致(对于所有目的和用例),我们就只有一个!这绝对是一个建设性的问题,比我有更多代表性的人应该重新打开这个。谢谢你的建议。我正在使用PLT方案,我非常喜欢它。它今天被称为“球拍”。@vonbrand:是的,肯定是过期了,不能更新了……鸡拥有。事实上,我也可以在实际工作中使用它。不要忘记Gambit-C。AFAIK mzscheme创建一个静态链接的可执行文件,而chicken scheme是动态链接到libchicken的。没错,尝试在没有chicken scheme的平台上运行16k文件。它是动态链接的。通过选项
-static
,您还可以从编译器获取静态链接的可执行文件。对于
mzc
,需要在源代码的开头添加
#lang scheme
声明。然后
mzc--exe mztest hello.scm
给出了一个4.6M的可执行文件。虽然csc hello.scm-o cktest提供了一个3.2M的可执行文件,但我过去很喜欢chicken schem,但最近我的很多软件都坏了,我不喜欢这样。我真的要说的是坚持到底。东西在移动时不会断裂。你对鸡肉计划有什么不满意的地方吗?无法回答OP,但在我最近选择使用哪一个基准时尝试的少量基准中(一如既往,完全没有意义),Gambit绝对拥有鸡肉的性能。这似乎比平均速度快一倍要好。鸡的GC也慢了很多,大概十倍左右。