4.6. 多弁さに関するオプション

4.5. 実行モードにある、--help--version--numeric-version--print-libdirの各モードも参照。

-v

-vはGHCを多弁にする。GHCはバージョン番号を報告し、コンパイルシステムの段階ごとに、どのようにそれを起動したか(標準エラー出力に)表示する。さらに、大部分のコンパイル段階に対しても-vを渡し、渡されたものはバージョン番号(ほかの情報もあるかもしれない)を報告する。

心よりのお願いとして、バグを報告するときは-vオプションを使って頂きたい!我々は常に、あなたが正しいものを正しい順序で走らせているということを最初に確かめたいのである。

-v n

より正確にコンパイラの多弁さを制御するために、-vは省略可能な数値引数をとる。-vを単独で指定するのは-v3と同じで、そのほかの水準は以下のような意味を持っている。

-v0

本質的でないメッセージを表示しない。(これがデフォルトである)

-v1

最小限の多弁さ。コンパイル一回毎に一行を表示する。(--makeまたは--interactiveが有効のときはこれがデフォルト)

-v2

コンパイル段階が実行されるときに、その名前を印字する。(-dshow-passesと同等)

-v3

-v2と同じであるが、各コンパイル段階について完全なコマンド行(あれば)を印字する。

-v4

-v3と同じだが、各コンパイル段階が終わった後にその段階での中間形式でプログラムを表示する。(プリプロセスの結果とC/アセンブリファイルを除く)

--fprint-explicit-foralls, -fprint-explicit-kinds

これら二つのフラグは、エラーメッセージやGHCiにおいてGHCが型を表示する際、そのやりかたに影響する。-fprint-explicit-forallsは、型の最上位において明示的に(通常表示されない)forallを表示する。以下はGHCi内での例である。

ghci> let f x = x
ghci> :t f
f :: a -> a
ghci> :set -fprint-explicit-foralls
ghci> :t f
f :: forall a. a -> a

-fprint-explicit-kindsを使うと、通常抑制される型内の種forallと種適用を表示するようになる。種多相を使っている場合、これが重要になることがある。例を挙げる。

ghci> :set -XPolyKinds
ghci> data T a = MkT
ghci> :t MkT
MkT :: T b
ghci> :set -fprint-explicit-foralls
ghci> :t MkT
MkT :: forall (b::k). T b
ghci> :set -fprint-explicit-kinds
ghci> :t MkT
MkT :: forall (k::BOX) (b:k). T b
-ferror-spans

エラーメッセージに関連する構文要素がソースで占める位置を完全に出力するようにする。通常、GHCは構文要素の先頭の位置しか報告しない。

例えば、次のものは、

test.hs:3:6: parse error on input `where'

以下のようになる。

test296.hs:3:6-10: parse error on input `where'

また、複数行に渡る区間もあり得る。

test.hs:(5,4)-(6,7):
    Conflicting definitions for `a'
    Bound at: test.hs:5:4
              test.hs:6:7
    In the binding group for: a, b, a

行番号は一からはじまるが、カラム番号は零からはじまることに注意。これは既存の慣習に合わせたものである。(つまり、Emacsがこの方法を使っているということ)

-H size

ヒープの最小サイズをsizeにする。これは-RTS -Hsizeと同等である。4.17.3. ガベッジコレクタを制御するためのRTSオプションを見よ。

-Rghc-timing

GHCの実行に要した時間についての統計情報の一行要約を表示する。このオプションは+RTS -tstderrと同等である。4.17.3. ガベッジコレクタを制御するためのRTSオプションを見よ。