2011-07-05 4 views
19

私は、Haskellアプリケーションの1つにHaskell REPLを埋め込むことを試みています。その考え方は、Haskellライブラリのサブセットだけがデフォルトでロードされ、自分自身の関数セットもロードされ、ユーザは環境とやりとりするためにそれらを使用するということです。Haskellアプリケーション内でHaskell REPLを作成する

この問題を解決するには、(mini-)Haskellパーサー+エバリュエーターを作成し、私のmini-Haskellパーサーの関数を実際のHaskell関数にマップする方法があると知っていますが、これを行う。

ハスケルを使用してHaskell用のREPLを構築するうまくきれいな方法がありますか?

+0

GHCライブラリを使用していますか? (それらは、コンパイルされたHaskellコードとやりとりするためのたくさんの方法を提供しています) – fuz

+0

はい、それはオプションですが、私はそれらを使った経験がありません。正しい図書館に私を連れて行くことができるので、私はそれらを見ることができますか? – CharlieP

+0

[haskell.org](http://haskell.org/haskellwiki/GHC/As_a_library)を見ていかがですか? – fuz

答えて

10

既に存在しているいくつかのこと:もちろん、両方が実装だ方法を見てすることができるというか、それを直接使用することができるという意味で

  • GHCiの、(すなわち、あなたのREPLはただ話を持っていますstdin/stdoutを介してGHCiに送信)。
  • あなたはGHCにフック、それはあなたのためのすべての重労働をやらせることができますfull GHC API、 - のサブセットのラッパーであるロード・ファイル、追いかけ依存関係、解析し、型チェックなど
  • hint、コンパイルではなくインタラクティブな解釈に焦点を当てたGHC API - あなたがしたいことに合っているようです。
  • muevalは、ロードされたモジュール、リソースの使用などに制限があり、基本的には「安全な」対話モードです。あなたが#haskell IRCチャンネルにいたことがあるなら、lambdabotが使うものです。

上記のすべては、あなたがHaskellインタプリタを自分で書くことに対処したくないと仮定しています。おそらくそうです。