为什么Haskell为此代码提供了解析错误?

Rog*_*ews 6 haskell

我正在尝试创建一个程序,读取用户给出的数字,然后打印出来.当我打印它时,数字必须是一个整数,但是这段代码给了我一个解析错误:

main = do
{
       putStrLn "Please enter the number"
       number <- getLine
       putStrLn "The num is:" ++ show (read number:: Int)
}
Run Code Online (Sandbox Code Playgroud)

Tik*_*vis 10

如果在do语句中使用括号,则必须使用分号.另外,最后一行应该是putStrLn $ "The num is:" ++ show (read number :: Int)

所以你有两个选择:

main = do
{
   putStrLn "Please enter the number";
   number <- getLine;
   putStrLn $ "The num is:" ++ show (read number:: Int)
}
Run Code Online (Sandbox Code Playgroud)

要么:

main = do
   putStrLn "Please enter the number"
   number <- getLine
   putStrLn $ "The num is:" ++ show (read number:: Int)
Run Code Online (Sandbox Code Playgroud)

我见过的几乎所有代码都使用第二个版本,但它们都是有效的.请注意,在第二个版本中,空格变得很重要.

  • 我认为你最好不要把那些不相关的东西作为一个单独的问题. (2认同)