是否有一个替代'read`返回Maybe?

时间:2016-03-05 10:17:44

标签: haskell

我试图从IO中获取一个数字:

numberString <- getLine
print 3 + read numberString

如果numberString是一个很好的数字字符串(例如&#34; 3241&#34;),但是当它不是那么好的时候(例如&#34; 124gjh&#34; ),它引发了一个例外:

*** Exception: Prelude.read: no parse

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

read' :: String -> Maybe a

所以,如果事情不起作用而不是突然停止,我只会得Nothing

1 个答案:

答案 0 :(得分:4)

Text.Read中的readMaybe权限应该与您的要求完全相同:

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