これまでの各記事は以下から。
- 基本的な使い方
- 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オプションを指定すると、警告がエラー扱いになり、ビルドが止まるようになる。
今日はここまで!