我想知道是否有某种方法可以使Haskell在JVM上运行(编译或解释)?
Sourceforge上存在JHaskell,但是这个似乎空无一人。
GHC使用LLVM作为编译器后端。将LLVM编译为Java字节码是一个好主意还是可能?还是使用其他编译器后端?
我想知道是否有某种方法可以使Haskell在JVM上运行(编译或解释)?
Sourceforge上存在JHaskell,但是这个似乎空无一人。
GHC使用LLVM作为编译器后端。将LLVM编译为Java字节码是一个好主意还是可能?还是使用其他编译器后端?
recur
)的原因。
GOTO
,可以用于实现TCO。或者您使用蹦床。或者,您根本不使用JVM调用堆栈,而只是实现自己的。Clojure和Scala仅提供有限的TCO(基本上,仅优化尾部递归)的原因是因为它们出于互操作性和性能的原因希望使用JVM调用堆栈。就像Rich Hickey一样,Clojure的设计师说:互操作性,速度,总体拥有成本-选择两个。
Answers:
您可能需要调查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
(还有一两年的时间来实现它吗?)