2013-06-02 2 views
3

방금 ​​처음으로 하스켈 프로그램을 작성했지만 이해할 수없는 오류가 있습니다. 나는 방금 책에서 본 모범을 썼기 때문에 그것이 옳다고 생각합니다. 누구든지 제발 도와 주실 수 있습니까?하스켈 : 'putStrLn'입력에 대한 구문 분석 오류

main = do 
    putStrLn "Hello, what's your name?" 
    name <- getLine 
    putStrLn ("Hey" ++ name ++ ", nice to meet you!") 

오류 메시지는 다음과 같습니다

구문 분석 오류 입력에 'putStrLn'

그것은 이상하다.

+4

공백이 있는지 확인하여 탭 문자가 없는지 확인하십시오 (예 : [이 질문] (http://stackoverflow.com/questions/16870038/haskell-syntax-error-for-where-statement)). – hammar

+0

OH GOD! 고마워요! 그것은 작동합니다! 나는 그것이 약간 까다 롭다고 생각한다. : D – Mel

+0

제쳐두고 : 전체 오류 메시지처럼 보이지 않습니다. GHC 오류에는 줄 번호와 열 번호가 있습니다. 그 정보를 가진 사람 (당신을 포함하여)이 더 쉬웠을 것입니다, 그래서 항상 전체 오류 메시지를 포함시켜야합니다. :-) – shachaf

답변

7

SO가 탭을 공백으로 적어도 일부 변환하기 때문에 게시 된 코드에서 알 수는 없지만 다른 두 가지처럼 공백 대신 putStrLn 전에 리터럴 탭 문자를 입력해야 할 수 있습니다. 귀하의 do 블록에있는 또는 그 반대의 경우.

do 블록의 모든 문구는 정확히 동일한 공백으로 시작해야하며 시각적으로 정렬되지는 않습니다. 리터럴 탭을 특별한 방법으로 표시 할 수있는 텍스트 편집기를 사용하는 경우 그렇게하도록 설정하십시오. 그것은 당신에게 두통을 줄 것입니다.

+0

네, 그게 문제입니다. 나는 이것을 쓸 때 정말로 이것을 알아 차리지 못했다. 귀하의 대답은 정말 도움이됩니다. 고맙습니다! – Mel

+2

@Mel : 실제로 여러 줄을 들여 쓰기 할 때 여러 조합으로 탭과 공백을 섞을 수 있습니다. 중요한 것은 여기 [Haskell Report] (http://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3)에 탭 문자가 4 개가 아니라 8 개로 계산된다는 것입니다. 에디터를 설치하십시오. – yatima2975

관련 문제