有一些stdlib函数会在无效输入上抛出错误。例如:
Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse
我想将其换行以返回Either e a
。我怎么能这样做?
答案 0 :(得分:14)
There is no spoon.你没有听到我的声音。
但是,对于此特定示例,您应该使用reads
代替。
答案 1 :(得分:2)
我更喜欢将错误转换为值:
maybeRead :: Read a => String -> Maybe a
maybeRead s = case reads s of
[(x, "")] -> Just x
_ -> Nothing