2016-03-21 7 views
2

誰かが指摘する前に、私はここで答えを見てきました:Best way to call Haskell functions from within Javaと私は完全にそれらの答えを読んでいません。HaskellをJavaから呼び出す方法

"output.hs"というファイルにHaskell関数のセットがあります。通常、それらの機能を実行するために、私はHugsのような通訳を使用し、プロンプトから私のコマンドを入力します。

私がやりたいことは、そのプロセスをJavaアプリケーションからエミュレートすることです。私は、ユーザーがHaskellでコマンドを入力するJavaスイングのテキストフィールドを持っています。私がしたいのは、そのコマンドを解釈し、近くのテキストエリアに出力を表示させることです。本質的に、私はハスケル通訳の前をつくっています。

これに直接経験した人はいますか?

+5

HaskellをJavaから呼び出すにはどうすればいいですか? –

+0

ええ、私は偶然にタイトルを変更したと思います。 – dinstruction

+1

@MaxLiptonあなたがそれらの答えを読んでいないという事実は、彼らが質問に答えないということを意味しません。それは、あなたがそれらを理解するためにもっと学ぶ必要があることを意味します。 – sclv

答えて

3

GHCi/Hugsプロセスを作成し、入力してstdoutとstderrをアプリケーションにリダイレクトする方法はありますか? Java APIには、必要なものがすでに用意されています。 java.lang.ProcessBuilder

単純に関数を公開しても、Haskellの入力を評価する機能ではなく、実際に関数を公開するだけで、それらの関数を公開するだけでは機能しません。

ハスケル入力を評価するには、あなた自身のインタプリタを書くか、既存のものを使うか(私は存在しないと思います)、または私が提案したオプションを取ることが最も実用的で簡単なはずです:それをプロセスとして呼び出す。

私はこのアプローチでいくつかの経験を積んだことがありますが、動作するのは非常に簡単ですが、予期せず終了したことに注意してください。これがあなたのドメインではあまりにも難しい場合は、式ごとにインタープリタを呼び出すことを検討することもできます(例:ghc -e "1 + 1"2を出力します)。詳細については、GHCマニュアルのModes of operationを参照してください。これは簡単ですが、私はそれが遅くなり、迅速な入力で目立つかもしれないので、まれな評価にしか使用しません。

関連する問題