我想知道是否有一种方法可以使Haskell在JVM上运行(编译或解释)?
虽然Sourceforge上存在JHaskell,但这个项目似乎已经荒废了。
GHC使用LLVM作为编译器后端。将LLVM编译成Java字节码是一个好主意或可能吗?或者也许可以使用不同的编译器后端?
我想知道是否有一种方法可以使Haskell在JVM上运行(编译或解释)?
虽然Sourceforge上存在JHaskell,但这个项目似乎已经荒废了。
GHC使用LLVM作为编译器后端。将LLVM编译成Java字节码是一个好主意或可能吗?或者也许可以使用不同的编译器后端?
您可能想要研究一下Frege。引用该页面的话:
"Frege是一个非严格的,纯函数式编程语言,与Haskell类似。"
"Frege程序编译为Java并在JVM中运行。"
通过简要浏览语言规范,Frege看起来几乎是Haskell的克隆版。也许“与Haskell类似”这个说法只是为了设定正确的期望。
我知道的 JVM 中最接近 Haskell 的语言是 CAL。CAL 严重基于 Haskell,但它没有所有 Haskell 的功能。类型系统类似于 Haskell 98,并且像 do
符号这样的语法糖缺失。
这里是 Haskell 和 CAL 的比较:面向 Haskell 程序员的 CAL
Eclipse 插件非常精细和有用。
请注意,CAL 是 Open Quark 框架的一部分。
将 GHC 编译到 JVM 上存在一些困难,但这些困难是可以克服的。
http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F
(你有一两年的空余时间吗?)
recur
)的原因。 - jehaGOTO
相同,可用于实现TCO。或者您可以使用跳板(trampolines)。或者根本不使用JVM调用栈,而是自己实现。Clojure和Scala仅提供有限的TCO(基本上只优化尾递归),原因是它们想要利用JVM调用栈来实现互操作性和性能。正如Clojure设计师Rich Hickey所说的那样:互操作性、速度、TCO--选择其中两个。 - Jörg W Mittag