:setコマンド

:setコマンドでは二系統のオプションを設定できる。「+」で始まるGHCiオプションと「-」で始まる「コマンド行」オプションである。

注意: 現在のところ、:setコマンドは引数における引用符の使用を一切サポートしていない。引用符は削除されず、複数の単語を一つにまとめるのに使うこともできない。例えば、:set -DFOO='BAR BAZ'は期待した通りには動かないだろう。

GHCiオプション

GHCiオプションは、:setで有効化、 :unsetで無効化できる。

利用できるGHCiオプションは以下のものである。

+m

複数行コマンドのパースを有効にする。複数行コマンドは、現在の行が閉じていないレイアウト文脈を含んでいる場合に受け付けられる。

+r

通常、ロードされたモジュールにあるトップレベルの式(CAF(Constant Applicative Form)、あるいは定作用形とも呼ばれる)を評価した結果は、複数回のプロンプトでの評価をまたがって保持される。+rを有効にすると、トップレベルの式の評価結果はすべて、一回の評価が終わるごとに捨てられるようになる(それでも一回の評価の間は保持される)。

このオプションは、評価済みのトップレベル式が大量のメモリを消費するときや、再現性のある実行性能の計測をしたいときに有用かもしれない。

+s

一つ式を評価するごとに、経過時間や確保されたバイト数などの統計情報を表示する。注意: 確保されたバイト数はGC毎に計算されるので、これは記憶領域管理器の確保領域の大きさ程度の正確さしかない。そういうわけで、GCが起こらなかった場合、値として0が表示されるかもしれない。

+t

文がプロンプトに入力されたとき、束縛された変数それぞれの型を表示する。入力されたのが単一の式なら、束縛されるのは変数「it」だけである。

GHCiからGHCのコマンド行オプションを設定する

通常のGHCのコマンド行オプションを:setを使って設定することもできる。例えば、-fglasgow-extsを有効にするには、次のように入力すれば良い。

Prelude> :set -fglasgow-exts

GHCのコマンド行オプションのうち、動的なオプション(4.19. フラグ早見表の表を見よ)として設計されているものは全て、:setを使って有効にすることができる。オプションを無効にするには、逆の効果を持つオプションを有効にすれば良い。

Prelude> :set -fno-glasgow-exts

4.19. フラグ早見表には、可能なオプション全てについて逆の効果を持つオプションが記されている。

ある種の静的なオプション(特に、-package-I-i-l)も使えるが、次に再ロードするまで効果を発揮しないものもある。