2011-11-25 93 views
0

爲什麼下面的代碼不正確?我得到這個錯誤:做{{}中的最後一個生成器必須是一個表達式?Haskell壓痕錯誤

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

您在混合製表符和空格:第二行和第五行包含製表符,而第三行和第四行不包含製表符。

Haskell編譯器可能將選項卡擴展到與編輯器不同數量的空格,並且編輯器中看起來正確縮進的內容看起來會與編譯器混淆。

最好避免混合製表符和空格,只使用其中的一個進行縮進。

2

您有製表符而不是空格。將代碼粘貼到stackoverflow後,只有空格並且一切正常。

+0

謝謝大家,我明白了。 – osager