第2章GHCiを使う

目次

2.1. GHCiの紹介
2.2. ソースファイルをロードする
2.2.1. モジュールとファイル名
2.2.2. ソースコードの変更と再コンパイル
2.3. コンパイル済みコードをロードする
2.4. プロンプトで対話的に評価する
2.4.1. I/O動作とプロンプト
2.4.2. プロンプトでdo記法を使う
2.4.3. プロンプトで実際にスコープにあるのは何か
2.4.3.1. :module:load
2.4.3.2. 修飾名
2.4.3.3. :mainコマンドと:runコマンド
2.4.4. itという変数
2.4.5. GHCiにおける型のデフォルト化
2.5. GHCiデバッガ
2.5.1. ブレークポイントと変数内容の表示
2.5.1.1. ブレークポイントを設定する
2.5.1.2. ブレークポイントを一覧・削除する
2.5.2. ステップ実行
2.5.3. ブレークポイントのネスト
2.5.4. _resultという変数
2.5.5. 追跡と履歴
2.5.6. 例外をデバッグする
2.5.7. 例: 関数を調べる
2.5.8. 制約
2.6. GHCiを起動する
2.6.1. パッケージ
2.6.2. 追加のライブラリ
2.7. GHCiのコマンド群
2.8. :setコマンド
2.8.1. GHCiオプション
2.8.2. GHCiからGHCのコマンド行オプションを設定する
2.9. .ghciファイル
2.10. GHCi内でオブジェクトコードにコンパイルする
2.11. FAQと注意事項

GHCi[1]はGHCの対話環境であり、Haskellの式を対話的に評価したりプログラムを解釈実行したりできる。もしあなたがHugsに慣れ親しんでいるなら、GHCiの扱いにもすぐに慣れるだろう。しかしながら、GHCiはコンパイル済みコードをロードすることができ、また、GHCが提供する言語拡張の全て[2]をサポートする。また、GHCiには対話的デバッガが含まれている。(2.5. GHCiデバッガを見よ)

GHCiの紹介

GHCiセッションの例を見ていくことから始めよう。GHCiはghciコマンドで起動することができる。

$ ghci
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> 

GHCiがプレリュードと標準ライブラリをロードするのに少し時間が掛かるかもしれない。その後、プロンプトが表示される。バナーにある通り、:?と打ち込めば利用可能なコマンド一覧と、それぞれの短い説明が得られる。

これらのコマンドの大部分はこれから説明する。Hugsの利用者へ: 多くのことがHugsと同じように動作するので、すぐに使えるようになるはずである。

プロンプトでは、Haskellの式を入力することができる。

Prelude> 1+2
3
Prelude> let x = 42 in x / 9
4.666666666666667
Prelude> 

GHCiは行全体を一つの式だと解釈し、それを評価する。式は複数の行に渡っていてはいけない。エンターキーが押されると、GHCiは即座にそれを評価しようとする。

[1]

「i」はinteractiveのiである

[2]

ただし、現在のところ、foreign exportを除く