tin*_*lyx 2 haskell ghci command-line-arguments
我试图用GHCI并:set args进行main如下:
:set args "(\x -> x )"
Run Code Online (Sandbox Code Playgroud)
GHCi抱怨:
Couldn't read "\"(\\x -> x )\""as String
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这不能被视为一个字符串.我可以不用引号:
:set args (\x -> x )
Run Code Online (Sandbox Code Playgroud)
但显然,这是不正确的,它将被解释为4个参数而不是1个,如下面的main函数所示.
import System.Environment
main = do
args <- getArgs
putStrLn $ show $ length args
Run Code Online (Sandbox Code Playgroud)
有关如何将其传递给GHCi的任何指示?(我可以从命令行将其传递给已编译的ghc代码.)
谢谢,
试试这个:
?> :set args "(\\x -> x )"
?> getArgs
["(\\x -> x )"]
Run Code Online (Sandbox Code Playgroud)
请注意,ghci参数解析与shell参数解析不同.如果使用字符串,它将被解析为Haskell字符串.
另一种选择是withArgs自己使用:
?> withArgs ["(\\x -> x )"] (getArgs >>= mapM_ putStrLn)
(\x -> x )
Run Code Online (Sandbox Code Playgroud)