我正在尝试创建一个程序,该程序读取用户给出的数字然后打印出来。当我打印它时,数字必须是一个整数,但是这段代码给了我一个解析错误:
main = do
{
putStrLn "Please enter the number"
number <- getLine
putStrLn "The num is:" ++ show (read number:: Int)
}
答案 0 :(得分: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)
}
或:
main = do
putStrLn "Please enter the number"
number <- getLine
putStrLn $ "The num is:" ++ show (read number:: Int)
我见过的几乎所有代码都使用第二个版本,但它们都是有效的。请注意,在第二个版本中,空格变得很重要。
答案 1 :(得分:1)
Haskell识别Tab字符,因此您的程序可能会失败。如果您正在使用Tabs,请将它们更改为空格。