Как установить аргументы командной строки программы для GHCi? - PullRequest
32 голосов
/ 15 января 2012

Предположим, что какой-то файл на Haskell выполняется с

runghc Queens.hs gecode_compile

Теперь это не удается, и я хочу отладить его с помощью ghci.Как передать опцию gecode_compile в программу, чтобы getArgs правильно ее прочитал?

Спасибо !!

Ответы [ 3 ]

54 голосов
/ 15 января 2012

Вы также можете установить аргументы командной строки в ghci

ghci> :set args foo bar
ghci> main

или

ghci> :main foo bar
19 голосов
/ 15 января 2012

Вы можете использовать функцию 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
13 голосов
/ 15 января 2012

Вы можете использовать команду :set:

Prelude> :set args whatever

Это будет означать, что getArgs возвращает ["whatever"].

Так что в вашем случае вы должны просто сделать это:

Prelude> :set args gecode_compile
...