8

我想学习和使用 ML,但是那里有很多编译器。我需要:

  • 速度
  • 内存使用率低
  • 穿线
  • 可变数组和记录类型
  • 继续
  • 准备好生产代码
  • 简单的
  • 最新
  • ... 有用的图书馆
  • 在某种程度上便携

我不需要:

  • 对象
  • 图形用户界面
  • 对窗口的支持

例如,我发现OCamlOCaml Batteries includeMLton。对我有什么建议我应该选择哪一个?

4

3 回答 3

9

SML 对延续有更好的支持。如果你对延续有强烈的需求,那是更好的选择;OCaml 没有对它们的语言内支持,但是 Oleg 的Delimcc库用于分隔延续;作为外部,它可能比 SML 的实现慢。否则,OCaml 现在似乎有更多的吸引力,所以你应该期望工具和库会稍微好一些。

更一般地说,SML 往往更优雅,而 OCaml 有一些更高级的功能、怪癖和用户。在性能方面,它们都很好。

(有关两种语言最常见片段的句法比较,请参阅this;当然,没有介绍 OCaml 的对象和多态变体。)

于 2011-03-04T08:30:21.333 回答
5

Ocaml 满足您列表中的所有要求,但延续除外。它速度快、内存高效、可移植,具有 posix 线程绑定和用于轻量级协作线程的良好库。标准库非常有限,但有很多第三方库

有许多公司在生产中使用 OCaml 来处理各种事情。Caml 联盟网站上提到了其中一些公司。

我还推荐阅读一些优秀的 OCaml 体验报告:

简街资本的 OCaml

XenSource 的 OCaml

于 2011-03-04T16:58:20.163 回答
5

对 MLton 来说很好:

  • 速度
    • 整个程序优化定义比 OCaml 更快,但是每次重新编译的代价可能会很烦人。有关MLton 和 OCaml 的简单非正式比较,请参阅此链接
  • 穿线
  • 可变数组和记录类型
  • 继续
  • 准备好生产代码
    • 显然取决于您使用的库。但是基础库是可靠的,但是 MLton 有自己的附加功能,并且其他一些库具有此处列出的扩展库。但是MLton 库项目包含一些不错的代码。然而,与许多此类库/扩展一样,它们往往依赖于他们自己制作的其他扩展,因此很难只使用其中的一小部分。
  • 易菲
    • ForeignFunctionInterfaceNoLonger-FFI很棒。然而,我在大型 C 代码库上遇到了 NL-FFI 的速度问题,我认为这是由于 MLton 没有完全删除幻象类型。然而这只是一个猜测,我可能做错了什么。
  • 在某种程度上便携
于 2011-03-05T14:32:51.423 回答