readIOで例外処理
パースに失敗してプログラムが落ちるでは意味がないので。
-
付与されたタグ:
- Haskell
最初はreadを使っていたがreadIOに変更してごにょごにょと次のように。
import IO hiding (catch)
import Control.Exception
import Prelude hiding (catch)
-- ......
readPos :: IO (Int, Int)
readPos = do
line <- getLine
catch (readIO line :: IO (Int,Int))
(\e -> return (e::SomeException) >>
putStr "Input again!: " >>
hFlush stdout>>
readPos)
てな具合で。だんだんなんでもかんても再帰で処理する脳になってきた。よしよし。