在“真实世界”应用程序中使用ML

时间:2009-06-26 12:41:55

标签: compiler-construction functional-programming interpreter sml smlnj

我真的很喜欢在大学学习ML。我发现函数式编程通常是一种令人耳目一新的方式来编写某些算法。我听说过F#并且玩了一下。不过,我在ML中编写了一些有趣的函数,并希望将它们集成为我可以在其他应用程序中使用的库。

通常我将我的函数粘贴到SMLnj解释器中。有没有办法可以将它们编译下来?

5 个答案:

答案 0 :(得分:5)

您必须使用the MLj Compiler之类的内容。它编译为Java Byte代码。或者您可以使用SML.NET编译器编译为.NET IL。

答案 1 :(得分:4)

ML 中,双方都可以导出到C然后互相调用C函数。几乎所有东西都有一个FFI库,可以“轻松”导出到C。

http://www.smlnj.org/doc/SMLNJ-C/index.html

所以对于外界来说,你的sml库的行为就像一个C库,除了没有关联的段错误和内存泄漏*

*不是保证

答案 2 :(得分:2)

项目推广语言。使用ML为一个有趣且无可否认的“酷”项目做好准备,人们会蜂拥而至。例如,看一下Erlang与ejabberd和mochiweb - 这两个很酷的项目已经为像erlang这样的一次性钻石般的语言创造了奇迹(顺便说一下,这是我最近选择的开发语言)。我是一个人,很想看到有人用ML做出一些事情,语言是一种快乐的想法。

答案 3 :(得分:2)

several Standard ML compilers。 MLton wiki还包含benchmark

我使用了将标准ML编译成字节码的莫斯科ML。它并不快,但它确实有效。在效率方面,MLton经常被认为是最好的标准ML编译器。

答案 4 :(得分:0)

请注意,Poly / ML版本5或更高版本支持传统的“堆转储”模型和C风格的独立可执行文件。 Poly/ML website上的文档分布在许多不同的地方,其中一些在标题中有很旧的日期 - 但系统还活着并且还在踢。

对于版本5.0发行版(我们目前处于5.5版)传递release notes时解释了对象代码生成:请参见PolyML.export

还有一些Poly / ML C接口,最近已经过一些GUI项目的翻新。您应该在polyml邮件列表中询问。