2011-11-25 4 views
0

왜 다음 코드가 올바르지 않습니까? 이 오류가 발생합니다 : do {...}의 마지막 생성자가 표현식이어야합니까?하스켈 들여 쓰기 오류

main = do putStrLn "What is 2 + 2?" 
      x <- readLn 
      if x == 4 
       then putStrLn "You're right!" 
       else putStrLn "You're wrong!" 
+0

이것은 괴짜입니다. 내 질문에 쓴 코드를 복사하면 다시 작동합니다! 그러나 정확히 동일합니다! – osager

답변

9

탭과 공백을 혼합합니다. 두 번째 줄과 다섯 번째 줄에는 탭이 있지만 세 번째와 네 번째에는 탭이 없습니다.

하스켈 컴파일러는 탭을 에디터와 다른 공간으로 확장하고 편집기에서 올바르게 들여다 보이는 부분이 컴파일러와 엉망으로 보인다.

탭과 공백을 혼합하지 말고 들여 쓰기 용으로 하나만 사용하십시오.

2

공백 대신 표가 있습니다. stackoverflow에 코드를 붙여 넣은 후에는 공백 만 있으면 모든 것이 작동합니다.

+0

나는 그것을 모두 주셔서 감사합니다. – osager

관련 문제