我想猜一个数字游戏。
`
main :: IO()
checkGuess :: (Integral a) => a -> Bool
checkGuess b = if b == 9 then return True
main = do
print "Guess the number?"
guess <- getLine
checkGuess guess
但是在函数checkGuess上输入'::'时出现解析错误
答案 0 :(得分:6)
这里有几处错误:
where
子句; checkGuess
应该返回一个Bool
,但是使用return True
时,您将其设为Monad m => m Bool
; if ... then ... else ...
的{{1}} 不存在。这是合乎逻辑的,因为函数应始终返回某些内容; else
的类型为getLine
,因此IO String
的类型为guess
,而不是String
,Int
,因此您不能使用{ {1}}直接与数字进行比较;和Integer
应该是guess
,因为否则我们将打印字符串文字,而不是字符串内容。通常,您似乎正在用(纯)函数语言编写命令式程序。快速修复方法如下:
print