2013-07-22 45 views
2

我試圖用GHCI和:set argsmain,如下:如何使用GHCI:集args是帶引號的字符串包括功能

:set args "(\x -> x)" 

GHCI抱怨:

Couldn't read "\"(\\x -> x)\""as String 

我不不明白爲什麼這不能被視爲一個字符串。 我可以做不帶引號:

:set args (\x -> x) 

但很顯然,這是不正確的,它會被解釋成4個參數,而不是一個,如由以下main功能。

import System.Environment 

main = do 
    args <- getArgs 
    putStrLn $ show $ length args 

任何關於如何將此傳遞給GHCi的指針? (我可以把它的命令行編譯GHC代碼。)

感謝,

回答

6

試試這個:

λ> :set args "(\\x -> x)" 
λ> getArgs 
["(\\x -> x)"] 

注意ghci的參數解析是不一樣的殼參數解析。如果你使用一個字符串,它將被解析爲一個Haskell字符串。

另一種選擇是使用withArgs自己:

λ> withArgs ["(\\x -> x)"] (getArgs >>= mapM_ putStrLn) 
(\x -> x) 
+0

謝謝,我現在看到發生了什麼事情。這是逃生字符。 – tinlyx

相關問題