HaskellをJVMで実行する(コンパイルまたはインタープリター)方法があるかどうか疑問に思っていますか?
SourceforgeにはJHaskellがありますが、これは空で死んでいるようです。
GHCはコンパイラのバックエンドとしてLLVMを使用します。LLVMをJavaバイトコードにコンパイルするのは良い考えですか、それとも可能ですか?または、別のコンパイラバックエンドを使用しますか?
HaskellをJVMで実行する(コンパイルまたはインタープリター)方法があるかどうか疑問に思っていますか?
SourceforgeにはJHaskellがありますが、これは空で死んでいるようです。
GHCはコンパイラのバックエンドとしてLLVMを使用します。LLVMをJavaバイトコードにコンパイルするのは良い考えですか、それとも可能ですか?または、別のコンパイラバックエンドを使用しますか?
recur
)が必要です。
GOTO
、TCOの実装に使用できます。または、トランポリンを使用します。または、JVM呼び出しスタックをまったく使用せず、独自に実装するだけです。ClojureとScalaが限られたTCOしか提供しない(基本的には末尾再帰のみが最適化される)理由は、相互運用性とパフォーマンス上の理由から、JVM呼び出しスタックを使用したいからです。リッチヒッキーのように、Clojureの設計者は次のように述べています。相互運用、速度、TCO-2つ選んでください。
回答:
Fregeを調査することをお勧めします。そのページからの引用:
「フレーゲは、Haskellの精神に基づく非厳密で純粋な関数型プログラミング言語です。」
「フレーゲプログラムはJavaにコンパイルされ、JVMで実行されます。」
言語仕様を簡単に調べたところ、フレーゲはほぼHaskellのクローンのように見えます。おそらく、「Haskellの精神で」というフレーズは、適切な期待を設定することを目的とした単純なものです。
私が知っているJVMのhaskellに近い言語はCALだけです。CALはhaskellに大きく基づいていますが、haskellのすべての機能を備えているわけではありません。型システムはHaskell98に似ており、do
表記法のような構文糖衣構文がありません。
HaskellとCALの比較は次のとおりです:HaskellプログラマーのためのCAL
日食プラグインは非常に洗練されており、便利です。
CALはOpenQuarkフレームワークの一部であることに注意してください。
JVMへのGHC構築には、大きなが克服可能な障害があります。
http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F
(それを実現するために1、2年の余裕がありますか?)