2012-02-18 18 views
6

:browse:info:type GHCiコマンドは非常に便利です。モジュールの内容を取得する

Haskellプログラムで同じ情報をプログラマティックに得ることは可能ですか?つまり、モジュールからエクスポートされた関数、物の種類などを取得することです。

+0

何を試しましたか? –

+1

よろしいですか?何?私はHoogleとGoogleを見ていて何も見つけられませんでした。 – Lii

+2

GHC APIを使用できます。私はより単純な方法を知らない。 –

答えて

0

Daniel Fischer commented

あなたはGHCのAPIを使用することができます

。私はより単純な方法を知らない。

うまく動作するように見えますが、うまく動作します。そして、これはGHCiで:infoがどのように働くかと思います。提案していただきありがとうございます。

5

:browse - Haskellプログラムがコンパイルされると、どのモジュールが何から来たかについての情報は保持されません。その情報にアクセスすることはできません。

:typeData.Typeableを使用している場合を除き、実行時にタイプが表示されません。 Haskellの型は、コンパイラがコードの正確性/安全性をチェックするためのものです。

:info - 上記を参照してください。

+0

これは可能です.hiインターフェースファイルから静的情報を読み取る。 – Lii

+0

Hm、たぶん:ブラウジングは.hiファイルの静的情報に行うのが理にかなっています。 – Lii

+0

この答えが適切でない理由は、自分自身のメタ情報を操作するプログラムに興味がなく、ディスクに格納されているモジュールの情報を読み取るプログラムに興味があるからです。この情報は '.hi'ファイルに保存され、読み取ることができます。 – Lii

3

コンパイル時にモジュールの機能を取得するには、language-haskell-extractパッケージが面白いかもしれません。これは、正規表現に従って関数を抽出するのに役立ちます。

http://hackage.haskell.org/package/language-haskell-extract-0.2.1

+0

そのパッケージ内の関数は、呼び出し元モジュールの関数の名前を抽出します。それは時々役に立つかもしれませんが、私の問題は解決しません。 – Lii

関連する問題