帮我选择合适的Scheme实现

Ale*_* C. 9 scheme

考虑到分散在整个互联网上的有关该主题的系统性过时内容,这似乎真的太多了.

我根本无法找到可用的Scheme实现的无噪声和最新列表(除了那里,但我已经享受了一个丰富的功能总结表)所以我问社区而不是尝试几十种语言的实现我还没掌握.帮助我享受这种神奇的语言.

要求:

  • 免费(如发言)
  • 轻量级:没有超出标准的不必要的库,必须快速编译.比Guile轻的任何东西都可以轻量化.
  • R6RS(请不要使用巨魔,我正在学习语言,觉得有必要坚持标准)
  • 没有.NET,没有JVM
  • 应该至少在Linux上工作
  • 至少应该在x86上工作
  • 容易FFI
  • 快速实施的奖励点(太糟糕了Bigloo不支持R6RS).

我现在正在使用Ypsilon,我发现它很棒,但自2008年以来一直没有维护.Guile可以成为一个很好的竞争者,但它看起来相当沉重(和Ypsilon相比,FFI更容易).

我可能缺少一些高质量的实现,所以请随意分享您的经验.

更新感谢您的回答,我会选择Larceny,因为它提供了我正在寻找的所有内容.祝大家快乐诡计多端!

Mat*_*ard 8

你可能想看看Racket.它的文档和IDE非常好,它是JIT编译的,它支持各种语言,包括R 6 RS.你不确定球拍完成的唯一要求是轻量级 - 无论是否适用,这都是一个透视问题.

如果您不关心Racket提供的大量功能,Larceny也可能需要考虑.它由Will Clinger编写,他亲自参与了R 6 RS流程.Larceny是R 6 RS 最完整的实现之一.Petite Larceny可能很难编译,但这可能并不重要,具体取决于您所针对的平台.

最后,有Chez Scheme.我没有经验; 不过,它有一个高效且受到良好支持的计划的声誉.在任何情况下,请注意,据我所知,如果您想要访问FFI,则需要商业许可证.

编辑:添加了Larceny和Chez Scheme.

  • @Alexandre:不是"巨魔",但是,R6RS和简约就像水和油一样.尝试同时执行这两项操作的任何实现都必须在某种程度上在任一/两者上妥协.那么,问题是你愿意在每个标准中接受多少妥协. (3认同)
  • 作为一名Racket开发人员,我非常偏颇,但让我引起你对Python,Ruby和Haskell的关注; 每一个都是"主要实现"语言.同样,Racket是一种"主要实现"语言......恰好包括所有的Scheme. (2认同)

Bra*_*sie 5

虽然它可能无法满足您的所有要求,但我一直对有很多乐趣,它有一个充满活力的社区和许多实用应用程序库.