28

私の Haskell アプリケーションのディレクトリ構造は次のとおりです。

src/
    utils/Utils.hs
    subsystem/Subsystem.hs

モジュールはSubsystemモジュールをインポートしUtilsます。このコードを GHCi でハンドテストしたいと思います。

問題は、GHCi が (現在のディレクトリ) で利用可能なモジュールのみを探しているように見えることです'.'。そのため、サブシステム フォルダーにコピーUtils.hsし、手動でテストすることができましたSubsytem.hs。これを行うより良い方法はありますか?たとえば、ディレクトリで GHCi を起動し、 ディレクトリとディレクトリでモジュールを検索させたいとsrcします。GHCiへのモジュールパスを指定できますか?./utils./subsystem

4

4 に答える 4

22

-iオプションを使用して、モジュールを検索する場所をGHCiに指示できます。

ghci Foo.Bar -isrc

src/Foo/Bar.hsこれはGHCiにロードされます。このように、次のように2つの異なるディレクトリを指定することもできます。

ghci Bar.hs -i.:config 

./および./config/で依存関係を検索します。

モジュール検索パスの詳細については、GHCユーザーガイドを参照してください

于 2011-07-07T06:46:58.603 に答える
11

デフォルトでは、GHCがモジュールを検索するとき、GHCはとして解釈Foo.BarFoo/Bar.hsます。したがって、プロジェクトが1つしかない場合は、最上位ディレクトリのようにモジュールUtilsを作成し、のようにモジュールを作成できます。、という名前のディレクトリと一緒に存在することも、両方が独立して存在することもできることに注意してください。一般的なスタイルでは、最上位モジュールを使用して、階層内でその下のモジュールから単純に再エクスポートする傾向がありますが、これは必須ではありません。GHCユーザーガイドでは、上記の動作と、サポートされている他のオプションについて説明しています。Utils.hsUtils.FishcakesUtils/Fishcakes.hsUtils.hsUtils

私の知る限り、ほとんどの場合、コードは上記のデフォルトの構造を使用するか、cabalビルドの一部として指定された他の構造を使用するか、ライブラリとしてインストールされることを期待します。

于 2011-07-07T05:17:18.577 に答える
10

次のようなもので .ghci ファイルを作成できます。

:set -isrc -iutils -isubsystem

于 2011-07-07T15:15:34.623 に答える