2011-10-28 9 views
5

私はいくつかの関数をファイルに入れました。私のPC上でどこに私の機能を簡単にロードできるようにこのファイルを保存すべきですか?Haskellの「モジュール」はどこに保存しますか?

私は、Windows 64ビットコンピュータでHaskellプラットフォームを使用しています。

+1

... –

答えて

9

私は通常、自分のモジュールを同じディレクトリツリーに置き、ツリーのルートディレクトリでghciを起動します。その後、モジュールはお互いをインポートすることができ、私は容易に:loadモジュールをghciに対話的に入れることができます。

$ ghci 

.... loading .... 

Prelude> :load directory/subdirectory/mymodule.hs 
+0

マイ '' ghci' Cであるは::\プログラムファイル(x86の)ここで

は、文書化されています\ Haskell Platform \ 2011.2.0.0 \ bin'にあります。私はここに入れますか? – Dynamic

+0

いいえ!インストール時には、パスや環境変数に自分自身を入れておかなければなりません。そのため、あなたが入っているディレクトリに関係なく、コマンドラインから 'ghci'を実行することができます。環境変数が正しく設定されていない場合、コントロールパネルから手動で変更することができます。 –

+0

待って...何?あなたのPCにあなたの機能がありますか? – Dynamic

2

あなたのモジュールは、いくつかの異なるプロジェクトからアクセスできるようにしたい場合は、私は彼らのために秘密結社のパッケージを作成し、cabal installを使用して、それをインストールすることをお勧めしたいです。引数なしのcabal installは、現在のディレクトリにある.cabalファイルを検索し、対応するパッケージをインストールします。

モジュールを1つのプロジェクトからアクセスできるようにするには、階層的なフォルダツリーでソースを整理する通常の方法がHaskellにも適用されます。私は例を示しましょう:

Hello/World.hs 
Foo/Bar.hs 
Quux.hs 
Hello.hs 

Hello/World.hsは、ヘッダー内のmodule Hello.World whereを持っている必要があります。メインモジュールのサイズはmodule Mainである必要がありますが、実際のファイル名は何でもかまいません(例:Quux.hs)。 Foo/Bar.hsにはimport Hello.Worldを使用できます。 Foo/Bar.hsghciにロードすると、現在のディレクトリがツリーのルートになっている必要があります。そうでなければ、Hello.Worldは見つかりません。ファイル名ではなくモジュール名をghciに渡すことができます。 ghci Hello.Worldが動作します。クラウドで

http://haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html

http://haskell.org/ghc/docs/latest/html/users_guide/packages.html

+0

+1。 Cabalは実際にはとても使いやすいです。このユースケースのためにはかなり完全に自動化されています( 'cabal init'は' .cabal'ファイルを生成し、ビルドの依存関係を記入するだけです) –

関連する問題