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

gat*_*ado 34 haskell ghci

假设执行了一些Haskell文件

runghc Queens.hs gecode_compile
Run Code Online (Sandbox Code Playgroud)

现在,这失败了,我想调试它ghci.如何将选项传递给gecode_compile程序,以便getArgs正确读取?

谢谢!!

Dan*_*her 58

您还可以在ghci中设置命令行参数

ghci> :set args foo bar
ghci> main
Run Code Online (Sandbox Code Playgroud)

要么

ghci> :main foo bar
Run Code Online (Sandbox Code Playgroud)

  • 是的,太糟糕了,快捷方式没有打开跟踪 (2认同)

Joh*_*mew 20

您可以使用该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
Run Code Online (Sandbox Code Playgroud)


Tik*_*vis 13

您可以使用以下:set命令:

Prelude> :set args whatever
Run Code Online (Sandbox Code Playgroud)

这将意味着getArgs回报["whatever"].

所以在你的情况下你应该这样做:

Prelude> :set args gecode_compile
Run Code Online (Sandbox Code Playgroud)