Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 帮助我选择合适的方案实施_Scheme - Fatal编程技术网

Scheme 帮助我选择合适的方案实施

Scheme 帮助我选择合适的方案实施,scheme,Scheme,这似乎要求太高了,因为关于这个主题的系统性过时内容散布在互联网上 我根本找不到一个无噪音且最新的可用方案实现列表(除了,但我会喜欢一个丰富多彩的功能汇总表),所以我向社区询问,而不是尝试几十种我还不掌握的语言的实现。帮我享受这美妙的语言 要求: 自由的(如在演讲中) 轻量级:没有超出标准的不必要的库,必须快速编译。任何比Guile轻的东西都可以称为轻量级 R6RS(请不要使用巨魔,我正在学习这门语言,觉得有必要坚持一些标准的东西) 没有.NET,没有JVM 应该至少在Linux上工作 应至少在

这似乎要求太高了,因为关于这个主题的系统性过时内容散布在互联网上

我根本找不到一个无噪音且最新的可用方案实现列表(除了,但我会喜欢一个丰富多彩的功能汇总表),所以我向社区询问,而不是尝试几十种我还不掌握的语言的实现。帮我享受这美妙的语言

要求:

  • 自由的(如在演讲中)
  • 轻量级:没有超出标准的不必要的库,必须快速编译。任何比Guile轻的东西都可以称为轻量级
  • R6RS(请不要使用巨魔,我正在学习这门语言,觉得有必要坚持一些标准的东西)
  • 没有.NET,没有JVM
  • 应该至少在Linux上工作
  • 应至少在x86上工作
  • 简易FFI
  • 快速实现的额外好处(太糟糕了,Bigloo不支持R6RS)
我目前正在使用Ypsilon,我觉得很好,但自2008年以来就没有维护过。Guile可能是一个很好的竞争对手,但它似乎相当沉重(而FFI使用Ypsilon要容易得多)

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


更新谢谢你的回答,我将以盗窃罪论处,因为它提供了我所寻找的几乎所有东西。祝你们大家心想事成

(以前称为PLT方案)是最好的实施方案之一,是积极维护的,并包括R6RS支持。

您可能想看看。它的文档和IDE非常好,它是JIT编译的,并且它支持多种语言,包括R6R。我不确定你的球拍是否满足的唯一要求是重量轻,这是一个观点的问题,它是否正确

如果你不关心Racket提供的大量功能,你也可以考虑一下。它是由威尔·克林格(Will Clinger)写的,他亲自参与了R6RS过程。盗窃罪是R6RS最完整的实施方式之一。小盗窃可能很难编译,但这可能并不重要,这取决于你的目标平台

最后,还有一个问题。我没有这方面的经验;不过,这项计划以效率高、支持率高而著称。在任何情况下,请注意,据我所知,如果您想要访问FFI,您需要商业许可证


编辑:增加了盗窃罪和查兹骗局。

虽然它可能无法满足您的所有要求,但我一直对它很感兴趣,它拥有一个充满活力的社区和大量实用程序库。

一直以来都是,因此现在满足了您对“免费”(如语音)软件的坚持。它也是一个非常健壮的实现和编译器,具有健壮的传统。它也是完全符合R6RS的,作者Kent Dybvig是该标准的指导委员会之一


我建议从内部使用它的REPL。

谢谢。Chez方案不是免费的(添加到需求中)。盗窃罪看起来确实不错。他们的基准让我想到了Ikarus,它看起来很完美,但没有得到维护。然而,Racket似乎背离了该方案的简约美学特征。@Alexandre:不是说“巨魔”,而是说R6R和简约就像水和油一样结合在一起。任何试图同时做到这两个方面的实现都必须在某种程度上对其中一个/两个方面做出妥协。那么,问题是,在每个标准中,你愿意接受多少妥协。@Chris:“no troll”意味着我有使用R6RS的理由,主要原因是我在学习语言,我想坚持一些标准。我会考虑一个简单的实现,它只提供R6RS。作为一个球拍开发人员,我非常有偏见,但是让我把你的注意力放在Python、Ruby和Haskell上;每种语言都是“主要实现”语言。同样,Racket是一种“主要实现”语言。。。同时值得注意的是,许多盗窃罪基础设施(例如,它的两位编译器)早在R6RS之前就已经开发好了,因此在阅读早期RnRS报告时,其源代码可能更有意义。(我指出这一点主要是因为读了亚历山大的《坚持标准》一书后的反应。)谢谢。然而,球拍似乎太重了。@怀疑者:说得对。让我来增强一下。不是拖拉,但我怀疑你会发现R6RS实现能够满足所有这些要求。你可能会在“轻量级”、“免费”或列表中“较少”(我的话)的要求上妥协。我知道你对Guile不感兴趣,但2.x比大多数发行版的1.x要好得多。在基于Debian的系统上编译有点困难,但是如果你自己编译垃圾收集库,就容易多了。我对你尝试盗窃的经验很感兴趣。你走了多远?你换了吗?你还用它吗?+1-字面上说,这里唯一不合适的要求是鸡肉是R5RS标准与R6RS-在我看来,如果作者了解了方案的“核心”,那就更好了-不需要花太多精力去了解标准之间的差异。很高兴知道。几年前我离开了这个计划,但我仍然对口译员的实现方式感兴趣。