入力から 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";
}
問題は、文字列がメインに出力されるときに「* Exception: Prelude.read: no parse 」が表示されることです。遅延評価の問題ですか?どのように解決すればよいですか?