有没有“阅读”的替代方案可以返回 也许.



我试图从IO中获取一个数字,如下所示:

numberString <- getLine
print 3 + read numberString

如果numberString是一个好的数字字符串(如"3241"),但这有效,但是当它不是那么好的东西(如"124gjh")时,它会抛出异常:

*** Exception: Prelude.read: no parse

有一个返回[(a0, String)]reads函数,当没有任何匹配项时,这将是一个[]。有没有一种简单的方法让我有这样的东西:

read' :: String -> Maybe a

这样我就可以Nothing如果事情不起作用,而不是突然停止?

Text.ReadreadMaybe应该完全按照您的要求进行操作:

Prelude> import Text.Read(readMaybe)
Prelude Text.Read> readMaybe "3241" :: Maybe Int
Just 3241
Prelude Text.Read> readMaybe "Hello" :: Maybe Int
Nothing

最新更新