OCaml是否能在JVM上运行?

18

我研究了一些针对JVM的新语言,其中有两种语言最近引起了很多关注:Clojure和Scala。但在我不太博学的看法中,它们都不是最理想的选择。(由于我不想给自己带来麻烦,我们把这只当是我的猜测吧)

我认为一个棘手的选择是微软的发明 - F#。将OCaml语言移植到.NET平台上似乎非常棒。

问题是:有人成功地为JVM编写了完整功能的OCaml编译器吗?如果是这样,你会怎么看待它呢?

4个回答

14
"OCaml和Java"有各种尝试将Java与OCaml集成的链接。
由于希望使F#能够与.NET框架配合使用,因此它在某些方面与OCaml有所不同。与Scala一样,F#也是一种混合语言,您可以选择在这两种语言中选择多少FP(函数式编程)和多少OOP(面向对象编程)。
"Java、OCaml和F#"是一个人试图从Java转向OCaml的帖子,您可能会感兴趣。"

谢谢,詹姆斯。我不知道 F# 不会复制 OCaml。 - Bubba88
它们非常相似,如果你小心的话,你的OCaml源代码应该可以在F#中运行,但是他们为.NET扩展了F#。 - James Black
只是出于好奇,什么情况下OCaml代码不能像F#一样工作? - LB40
3
单态类型、函数子、结构子类型、多态变量、递归类型、递归模块、排版(格式化模块)、宏(camlp4)、在模式中使用非整型数字字面值。 - nlucaroni
1
@LB - 这里有一个讨论你问题的线程:https://dev59.com/l3VC5IYBdhLWcg3wz0h9 - James Black
显示剩余2条评论

12

关于Cafesterol: http://cafesterol.x9c.fr/

Cafesterol是Objective Caml编译器套件的扩展,可生成Java字节码。Cafesterol提供了一个ocamljava编译器,它是与Objective Caml标准发行版中分发的ocamlc/ocamlopt编译器相对应的Java版本。Cafesterol 1.3版与Objective Caml 3.11.1版一起构建。生成的Java类需要运行1.3版的Cadmium,并且可以在任何Java 1.6虚拟机上执行。


最后的历史记录条目是“版本1.4(2010年2月6日)”;_;_ - David Tonhofer

4

Yeti是基于ML(如Ocaml)的构建和类型系统,尽管在语法上有点不同,也有Java-Integration的扩展。由于其对(递归)记录类型的强大支持,我认为它目前与Ocaml最接近。

可以理解为JVM上的F#。

http://mth.github.com/yeti/


4

Ocaml-Java是目前最接近JVM官方版OCaml的版本,质量非常高。

(另外,JVM上的Haskell版本:Frege


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接