Haskell:输入'putStrLn'的解析错误

Mel*_*Mel 3 haskell parse-error

我刚刚编写了我的第一个Haskell程序,但是有一个我无法理解的错误.我认为这是正确的,因为我只是像书中的例子那样写它.有人可以帮帮我吗?

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

错误消息是:

输入'putStrLn'解析错误

它很奇怪.

Cai*_*von 7

虽然从你发布的代码中无法分辨,因为SO至少在某些时候将制表符转换为空格,但问题很可能是你输入了一个文字制表符,putStrLn而不是像do块中其他两行那样输入四个空格,或相反亦然.

do块中的所有语句必须以完全相同的空格开头,而不仅仅是在视觉上排列.如果您使用的文本编辑器可以以特殊方式显示文字标签,请将其设置为这样做; 它会为你节省一些麻烦.

  • @Mel:实际上,当缩进多行时,你可以在各种组合中混合制表符和空格; 这里重要的是[Haskell Report](http://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3)指定制表符占8个空格而不是4个,因为你似乎设置你的编辑器. (2认同)