学习/使用ML。我应该使用哪个系统?

时间:2011-03-04 07:58:15

标签: ocaml sml ml

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

  • 速度
  • 内存使用率低
  • 线程
  • 可变数组和记录类型
  • 延续
  • 准备好生产代码
  • easy ffi
  • 最新
  • ...有用的图书馆
  • 移动到某种程度

我不需要:

  • 物体
  • GUI
  • 支持Windows

例如,我找到了OCamlOCaml Batteries includeMLton。对我来说有什么建议我应该选择哪一个?

3 个答案:

答案 0 :(得分:9)

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

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

(参见this对两种语言中最常见的片段进行语法比较;当然没有提供OCaml的对象和多态变体。)

答案 1 :(得分:5)

Ocaml满足列表中的所有要求,但continuation除外。它速度快,内存效率高,可移植,具有posix线程绑定和轻量级协作线程的良好库。标准库非常有限,但有很多third-party libraries

有许多公司在生产中使用OCaml来处理所有类型的事情。 Caml consortium网站上提到了一些公司。

我还建议您阅读一些优秀的OCaml体验报告:

OCaml at Jane Street Capital

OCaml at XenSource

答案 2 :(得分:5)

很好的MLton:

  • 速度
    • 整个程序优化definetley给你提供比OCaml更好的速度,但是你为每次重新编译服务的惩罚可能非常烦人。有关MLton和OCaml的简单非正式比较,请参阅this link
  • 线程
  • 可变数组和记录类型
  • 延续
  • 准备好生产代码
    • 显然取决于您使用的库。但是基础库是可靠的,但是MLton有自己的additions,还有一些其他的repos扩展名为here。但是MLton library project包含一些不错的代码。然而,与许多此类库/扩展一样,它们倾向于依赖于由它们自己创建的其他扩展,因此很难仅使用它们的一小部分。
  • 容易ffi
    • ForeignFunctionInterfaceNoLonger-FFI很棒。然而,我在大C代码库上遇到了NL-FFI的速度问题,我认为这是因为MLton没有删除幻像类型的完整性。然而,这只是猜测,我可能做错了。
  • 在某种程度上便携