为什么以下代码不正确?我收到此错误:do {...}中的最后一个生成器必须是表达式?
main = do putStrLn "What is 2 + 2?"
x <- readLn
if x == 4
then putStrLn "You're right!"
else putStrLn "You're wrong!"
答案 0 :(得分:9)
您正在混合制表符和空格:第二行和第五行包含制表符,而第三行和第四行则不包含制表符。
Haskell编译器可能会将制表符扩展到与编辑器不同数量的空格,并且在编辑器中正确缩进的内容看起来很混乱到编译器。
最好避免混合标签和空格,只使用其中一个进行缩进。
答案 1 :(得分:2)
你有表格而不是空格。将代码粘贴到stackoverflow后,只有空格,一切正常。