我真的很喜欢在大学学习机器学习。我发现函数式编程通常是编写某些算法的一种令人耳目一新的优雅方式。我听说过 F# 并且玩过它。尽管如此,我还是在 ML 中编写了一些有趣的函数,并希望将它们集成为可以在其他应用程序中使用的库。
通常我将我的函数粘贴到 SMLnj 解释器中。有没有办法可以将它们编译下来?
我真的很喜欢在大学学习机器学习。我发现函数式编程通常是编写某些算法的一种令人耳目一新的优雅方式。我听说过 F# 并且玩过它。尽管如此,我还是在 ML 中编写了一些有趣的函数,并希望将它们集成为可以在其他应用程序中使用的库。
通常我将我的函数粘贴到 SMLnj 解释器中。有没有办法可以将它们编译下来?
您将不得不使用类似MLj Compiler 的东西。它编译成 Java 字节码。或者您可以使用SML.NET编译器编译为 .NET IL。
在ML中,双方都导出到 C 然后互相调用 C 函数是很常见的。几乎所有东西都有一个 FFI 库,可以“轻松”导出到 C。
http://www.smlnj.org/doc/SMLNJ-C/index.html
所以对外界来说,你的 sml 库的行为就像一个 C 库,除了没有相关的段错误和内存泄漏*
*不是保证
项目普及语言。使用 ML 为一个有趣且无可否认的“酷”项目做基础工作,人们会涌向该语言。例如,用 ejabberd 和 mochiweb 来看看 Erlang——这两个很酷的项目都为像 erlang (顺便说一句,这是我最近选择的开发语言)这样的一次性粗略语言创造了奇迹。作为一个人,我很想看到有人用 ML 做一些有趣的事情,用这种语言思考是一种乐趣。
有几个标准 ML 编译器。MLton wiki 还包含一个基准。
我使用了将标准 ML 编译成字节码的莫斯科 ML。它不快,但它有效。MLton 经常被认为是效率方面最好的标准 ML 编译器。
请注意,Poly/ML 版本 5 或更高版本同时支持传统的“堆转储”模型和 C 风格的独立可执行文件。Poly/ML 网站上的文档分布在许多不同的地方,其中一些标题中的日期确实很旧——但该系统仍然活跃且运行良好。
目标代码生成在 5.0 版本的发行说明中进行了解释(我们目前是 5.5):见PolyML.export
那里。
还有一些 Poly/ML C 接口,最近已被翻新为用于一些 GUI 项目。您应该在 polyml 邮件列表中询问。