如何为GHCi设置程序的命令行参数?

44

假设某个Haskell文件被执行:

runghc Queens.hs gecode_compile

现在,这个操作失败了,我想用 ghci 进行调试。我该如何将选项 gecode_compile 传递给程序,以便 getArgs 能够正确读取它?

谢谢!

3个回答

80

你也可以在ghci中设置命令行参数

ghci> :set args foo bar
ghci> main
或者
ghci> :main foo bar

3
是的,太糟糕了,这个快捷方式无法启用跟踪。 - gatoatigrado

25

您可以使用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

14

您可以使用:set命令:

Prelude> :set args whatever
这意味着getArgs将返回["whatever"]。因此,在你的情况下,你只需要这样做:
Prelude> :set args gecode_compile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接