1
我想從輸入中讀取一個Int並管理來自用戶的錯誤輸入。爲什麼趕不上?
這一段代碼,沒有工作,但現在看來,這是不工作...
asknumplayers = do {
putStr "Please the number of other players:\n";
numstr <- getLine;
maybenum <- catch (return (Just (read numstr::Int))) (\(e::SomeException) -> return Nothing);
case maybenum of
Nothing -> asknumplayers;
Just num -> return num;
}
這是主要的:
main = do {
num <- asknumplayers;
putStr $ "Thank you, ready to play against "++ (show num) ++" players?!\n";
}
的問題是,我仍然當字符串打印在主文件中時,得到「*異常:Prelude.read:no parse」。 這是一個懶惰評估問題嗎?我應該如何解決它?
可能的重複:[如何在Haskell中正確使用Control.Exception.catch?](http://stackoverflow.com/q/18052619/1333025)。 –