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