当我想简单地打印出一个值时,为什么 ghc 给我一个解析错误?

Why ghc give me a parse error when I wish to simply print out a value?

我有一个 haskell 文件:

main = putStrLn "hello world"
let a=1
show a

并且 ghc 说:

main.hs:3:1:                                                                                                                            
parse error (possibly incorrect indentation or mismatched brackets) 

这里有很多问题。

首先,如果您想对 IO 中的表达式进行排序,您需要将它们放在 do 块中。其次,您需要使用缩进(只有空格,没有制表符!)来分隔 do 块,如下所示:

main = do
   putStrLn "hello world"
   let a=1
   show a

最后,show a将return一个字符串,但是你想要一个打印一个字符串的IO操作,所以它应该是putStrLn (show a),或者你可以使用 print a 因为打印功能是 showing(变成字符串)然后打印到控制台的组合。