web-dev-qa-db-ja.com

GHCiのプログラムのコマンドライン引数を設定するにはどうすればよいですか?

いくつかのHaskellファイルがで実行されたとしましょう

runghc Queens.hs gecode_compile

さて、これは失敗し、ghciでデバッグしたいと思います。オプションを渡すにはどうすればよいですかgecode_compileをプログラムに入れるので、getArgsはそれを正しく読み取りますか?

ありがとう!

36
gatoatigrado

Ghciでコマンドライン引数を設定することもできます

ghci> :set args foo bar
ghci> main

または

ghci> :main foo bar
60
Daniel Fischer

System.Environment.withArgs 必要な引数を使用してmainを実行する関数。

これがセッションの例です(無関係な詳細は省略されています):

$ ghci
GHCi, version 7.0.3: http://www.haskell.org/ghc/  :? for help
Prelude> import System.Environment
Prelude System.Environment> let main = getArgs >>= mapM_ putStrLn
Prelude System.Environment> withArgs ["hello", "world"] main
hello
world
21

:setコマンドを使用できます。

Prelude> :set args whatever

これは、getArgs["whatever"]を返すことを意味します。

したがって、あなたの場合は、これを行う必要があります。

Prelude> :set args gecode_compile
13
Tikhon Jelvis