Catching errors thrown with `error`?
-
13-06-2021 - |
Question
There are some stdlib functions that throw errors on invalid input. For example:
Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse
I would like to wrap it to return a Either e a
instead. How can I do that?
La solution
There is no spoon. You didn't hear it from me.
For this particular example, though, you should use reads
instead.
Autres conseils
I prefer to turn errors into values:
maybeRead :: Read a => String -> Maybe a
maybeRead s = case reads s of
[(x, "")] -> Just x
_ -> Nothing
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow