2013-07-22 5 views
2
내가 GHCi를 사용하려고했다

main에 대한 :set args을 포함 인용 문자열을 다음과 같이어떻게 GHCi를 사용 : 세트 인수를 기능

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

GHCi 불평 :

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

내가 돈 ' 이것이 왜 문자열로 취급 될 수 없는지 이해하지 못합니다.

:set args (\x -> x) 

을하지만, 분명히, 이것은 잘못된 것입니다 다음과 같은 main 기능에 의해 그림과 같이 대신 하나의 4 개 매개 변수로 해석됩니다 : 나는 따옴표없이 할 수 있었다.

import System.Environment 

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

이것을 GHCi로 전달하는 방법에 대한 지침이 있습니까? 는 (I 명령 줄에서 컴파일 GHC 코드에 전달할 수 있습니다.)

감사합니다,

답변

6

을이 시도 : ghci 인수 구문 분석 쉘 인수 구문 분석과 동일하지 않습니다

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

참고. 문자열을 사용하면 하스켈 문자열로 구문 분석됩니다.

또 다른 옵션은 withArgs 직접 사용하는 것입니다

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

덕분에, 지금 무슨 일이 일어나고 있는지를 참조하십시오. 그것은 탈출 숯입니다. – tinlyx