これまでの各記事は以下から。
- 基本的な使い方
- GHCiの使い方
- ロードとインポート
- 式の評価と変数への束縛
- 複数行の入力
- 型などの宣言と、型や識別子、モジュールの調査
- 環境のカスタマイズ
- GHCの使い方
- ビルド
- 基本的なオプション
なお、他にも、プロファイリングを行ったり、GHCで拡張された機能を使ったり、FFIを使ったりすることも出来るようなんだけど、それらについては省略。
以下では、特によく使いそうな機能についてまとめておく。
GHCiの使い方のまとめ
起動と終了
起動するにはghci
コマンドを使う。
終了するには、:quit
コマンド(省略形は:q
)を使う。(もしくはCtrl+D)
ロードとインポート
モジュールのロードを行うには、:load
コマンド(省略形は:l
)を使う。
ファイルを編集したい場合は:edit
コマンド(省略形は:e
)を、そして、モジュールのリロードを行いたい場合には、:reload
コマンド(省略形は:r
)を使う。
インポートを行うには、import
もしくは:module
コマンド(省略形は:m
)を使う。
ロードされたモジュール一覧を見るには:show modules
コマンドを、インポートされたモジュール一覧を見るには:show imports
コマンドを使う。
式の評価と変数への束縛
式を入力すると評価が行われ、その結果が表示される。
また、その結果はit
という変数に束縛される。
そして、IOモナド内にいるときと同様に、let
を使って変数へ束縛したり、<-
でIOモナドの中身を束縛できる。
束縛された変数の一覧は、:show bindings
コマンドで見ることが出来る。
複数行の入力
複数行の入力を行いたい場合、:{
で始めて:}
で終わるようにする。
デフォルトで複数行入力になるようにするには、:set +m
コマンドを使う。
(元の挙動に戻したい場合、:unset +m
とする)
型などの宣言
型や識別子、モジュールの調査
型の情報を見るには、:type
コマンド(省略形は:t
)を使う。
識別子の情報を見るには、:info
コマンド(省略形は:i
)を使う。
モジュールの情報を見るには、:browse
コマンドを使う。
GHCの使い方のまとめ
ビルド
GHCを使ってビルドするには、ghc
コマンドを使う。
引数にMainモジュールを含むソースファイルを指定すれば、依存関係を調べて、必要ならコンパイルを行ってくれる。
モジュールの検索パスを追加したい場合、-i
オプションを使う。
(オプションのあとに半角スペースを空けずに、追加したいディレクトリを指定する)
最終的に出力されるファイルの名前を指定したい場合、-o
オプションを使う。
出力されるオブジェクトファイルやインタフェースファイルの場所を指定したい場合、-outputdir
オプションを使う。
ソースファイルごとのオプションの指定
ソースファイルごとにオプションを指定したい場合、module宣言よりも前に、次のようなプラグマを書く。
{-# OPTIONS_GHC ここにオプション #-}
なお、ここに指定できるオプションは、動的オプションだけ。
(ただ、ほとんどのオプションは動的オプションなので、あまり気にする必要はない)
冗長出力に関するオプション
-v
オプションを指定すると、冗長出力がされるようになる。
また、-v0
、-v1
、-v2
、-v3
、-v4
オプションで、冗長出力のレベルをコントロールすることが出来る。
(-v3
が-v
と同じ動作)
最適化に関するオプション
-O
オプションを指定すると、最適化が行われるようになる。
また、-O0
、-O1
、-O2
オプションで、最適化をコントロールすることが出来る。
(-O1
が-O
と同じ動作)
警告に関するオプション
-W
オプションを指定すると、標準的な警告に加えて、いくつかの有用な警告が有効になる。
また、-Wall
オプションを指定すると、(一部を除いた)ほぼすべての警告が有効になる。
-Werror
オプションを指定すると、警告がエラー扱いになり、ビルドが止まるようになる。
今日はここまで!