無効な入力でエラーをスローする stdlib 関数がいくつかあります。例えば:
Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse
代わりに a を返すようにラップしたいと思いEither e a
ます。どうやってやるの?
無効な入力でエラーをスローする stdlib 関数がいくつかあります。例えば:
Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse
代わりに a を返すようにラップしたいと思いEither e a
ます。どうやってやるの?
スプーンはありません。あなたは私からそれを聞いていませんでした。
ただし、この特定の例では、reads
代わりにを使用する必要があります。
エラーを値に変換することを好みます。
maybeRead :: Read a => String -> Maybe a
maybeRead s = case reads s of
[(x, "")] -> Just x
_ -> Nothing