6. runghc を使う¶
runghc を使えばHaskellのプログラムをコンパイルせずに実行できます.
6.1. 使い方¶
runghc のコマンドラインは以下のようになります.
runghc [runghc flags] [GHC flags] module [program args]
runghcが認識しないフラグはすべて自動的にGHCへ渡します.
runghcもGHCも両方ともに認識するフラグでGHCに渡したいフラグであるなら -- という区切り子の後に置きます.
この区切り子の後に置いたフラグはGHCのフラグとしてのみ扱われます.
他にもrunghcのオプション --ghc-arg=<arg> を使えばフラグや引数を直接GHCに渡せます.
module はHaskellのソースファイル名で,拡張子を指定してもしなくてもかまいません.
もし何らかの理由でファイル名が - で始まっている場合は2つめの -- を使ってフラグ列の終端を示せばよいでしょう.
2つめの -- より後にある部分はファイルあるいはモジュール名とそれに続く引数と見なします.
たとえば,以下のようにできます.
runghc -- -- -hello.hs
6.2. runghc フラグ¶
runghc は以下のフラグを受け付けます.
-f /path/to/ghc: runghcにプログラムを実行するGHC実行ファイルを教えます.デフォルトでは,runghc はシステムの検索パスを探します.--ghc-arg=<arg>: GHCへオプションまたは引数を渡します.--help: 使い方情報を表示します.--version: バージョン情報を表示します.
6.3. GHCフラグ¶
前述のように -- や --ghc-arg=<arg> を使えば GHC フラグが必要なときに曖昧にならないようにできます.
たとえば -f は runghc も認識するフラグですから -fliberate-case を GHC に渡すには以下のどちらかを使います.
runghc -- -fliberate-caserunghc --ghc-arg=-fliberate-case
フラグではない引数がGHCに渡ることはないということに注意してください.
使われないフラグではない引数は,実行すべきプログラムの名前として扱います.
GHCフラグが引数を取る場合 --ghc-arg=<arg> を使ってGHCにその引数を渡します.
たとえば -package foo を GHC に渡したいときには,以下のどちらかを使います.
runghc -package --ghc-arg=foo Main.hsrunghc --ghc-arg=-package --ghc-arg=foo Main.hs