2.9. .ghciファイル

GHCiは、開始するとき、-ignore-dot-ghciフラグが与えられていない限り、以下の各ファイルが存在していれば、この順で読み、書かれているコマンドを実行する。

  1. ./.ghci

  2. appdata/ghc/ghci.conf、ただしappdataはシステムに依存。通常はC:/Documents and Settings/user/Application Dataのようなところ。

  3. Unixでは、$HOME/.ghc/ghci.conf

  4. $HOME/.ghci

ghci.confファイルは、あなたのお気に入りのオプション(例えば:set +s)を有効にしたり、便利なマクロを定義したりするのに適している。注意: このファイルで言語オプションを設定する場合、通常は:setでなく :setiを使う方が良い(2.8.3. 対話的評価についてのみのオプションを設定するを見よ)。

.ghciをHaskellプロジェクトのディレクトリに置いて、プロジェクトで使われるオプションを設定するようにしておくと、GHCiを立ち上げるたびにそれを打ち込まなくて済むので便利である。例えば、プロジェクトが多引数の型クラスとスコープのある型変数ととCPPを使い、ソースファイルがA、B、Cという三つのサブディレクトリに置かれているなら、次の数行を.ghciに置くことができる。

:set -XMultiParamTypeClasses -XScopedTypeVariables -cpp
:set -iA:B:C

(厳密には-iフラグは静的オプションであるが、このように:setしても動くことに注意。ただし、この変更は、次に:loadが実行されるまで効果を発揮しない。)

GHCiマクロを沢山持つようになると、それらを別のファイルから調達したいと思うかもしれない。また、.ghciファイルをデバッグしているときに、それを実行中のGHCiにロードしたいと思うことがあるかもしれない。

:def source readFile

あなたの.ghciにこのマクロを置いておけば、:source fileとすることでfileからGHCiコマンドを読み込むことができる。Haskell wikiのページGHC/GHCiでは、.ghciについてのその他の助言を読むことが(そしてもちろん、追加することも)できる。

加えて、標準のファイルの後には-ghci-scriptフラグで指定されたファイルが全て読まれる。これによってデフォルト以外の.ghciファイルを使うことができる。

開始時ファイルが読まれるかどうかを制御する二つのコマンド行オプションがある。

-ignore-dot-ghci

開始するとき、./.ghciその他の開始時ファイルを読まない。

-ghci-script

通常の開始ファイルの後に指定されたファイルを読む。繰り返すことで複数の入力を指定できる。