2.6. GHCiを起動する

GHCiはghciまたはghc --interactiveというコマンドで起動される。一つまたは複数のモジュールやファイル名をコマンド行から指定することもできる。そうすると、GHCiは、プロンプトで:load moduleと入力されたときと同じように(2.7. GHCiのコマンド群を見よ)、指定されたモジュールやファイル(と、それらが依存するモジュール)をロードする。例えば、GHCiを起動して、プログラム(Main.hsに最上位モジュールがある)をロードするには、次のように打てば良い。

$ ghci Main.hs

GHCが受け付けるコマンド行オプション(第4章. GHCを使うを見よ)の大部分は対話的モードでも有効であり、そうでないオプションは大抵明らかである。

2.6.1. パッケージ

大部分のパッケージ(4.9.1. パッケージを使う を見よ)は追加のフラグを指定することなく利用可能であり、初めて必要になったときに自動的にロードされる。

一方で、隠されたパッケージについては、-packageフラグを使ってロードを依頼する必要がある。

$ ghci -package readline
GHCi, version 6.8.1: http://www.haskell.org/ghc/  :? for help
Loading package base ... linking ... done.
Loading package readline-1.0 ... linking ... done.
Prelude>

起動中のGHCiから新しいパッケージをロードするには、次のコマンドが使える。

Prelude> :set -package name

ただし、これをするとロードされているモジュールが全て未ロードになり、Preludeに戻されることになるので注意。

2.6.2. 追加のライブラリ

追加のライブラリは、コマンド行から、通常の-llibオプションを使って指定することができる。(ここでいうライブラリとは、他言語のオブジェクトコードのライブラリのことである。Haskellソースのライブラリを使うことについては、2.2.1. モジュールとファイル名を見よ)例えば、「m」ライブラリをロードするには、次のようにすれば良い。

$ ghci -lm

.so形式の共有ライブラリを使うシステムでは、実際にロードされるライブラリはliblib.soである。GHCiは、ライブラリを探すとき、以下の場所をこの順で試す。

  • -Lpathコマンド行オプションで指定されたパス。

  • システムの標準ライブラリ探索パス。これは、システムによっては、LD_LIBRARY_PATH環境変数を設定することで変更できる。

.dll形式の共有ライブラリを使うシステムでは、実際にロードされるライブラリはlib.dllである。この場合も、ライブラリが見付からなかった場合はGHCiはエラーを報告する。

GHCiは単なるオブジェクトファイル(プラットフォームによって、.o.objである)をコマンド行からロードすることもできる。これには、オブジェクトファイルの名前をコマンド行に追加するだけで良い。

-lの順序は意味を持つ。あるライブラリは、それが依存するライブラリよりもに言及されなければならない。(4.12.6. リンクに影響するオプションを見よ)