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-case
runghc --ghc-arg=-fliberate-case
フラグではない引数がGHCに渡ることはないということに注意してください.
使われないフラグではない引数は,実行すべきプログラムの名前として扱います.
GHCフラグが引数を取る場合 --ghc-arg=<arg>
を使ってGHCにその引数を渡します.
たとえば -package foo
を GHC に渡したいときには,以下のどちらかを使います.
runghc -package --ghc-arg=foo Main.hs
runghc --ghc-arg=-package --ghc-arg=foo Main.hs