Haskell缩进错误

时间:2011-11-25 20:04:48

标签: haskell

为什么以下代码不正确?我收到此错误:do {...}中的最后一个生成器必须是表达式?

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

2 个答案:

答案 0 :(得分:9)

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

Haskell编译器可能会将制表符扩展到与编辑器不同数量的空格,并且在编辑器中正确缩进的内容看起来很混乱到编译器。

最好避免混合标签和空格,只使用其中一个进行缩进。

答案 1 :(得分:2)

你有表格而不是空格。将代码粘贴到stackoverflow后,只有空格,一切正常。