[Haskell-cafe] catching fails on read

Don Stewart dons at galois.com
Tue Apr 29 17:46:05 EDT 2008

> I'm new to Haskell and have a stupid question.
> How can a catch a parsing error on a read? Something like 
> let s = "e"
> in read s :: Int
> I've been searching for a trick and couldn't find one. I want to enter 
> commands directly from the keyboard and don't want the program to abort if I 
> do a typing error.

      maybeRead :: Read a => String -> Maybe a
      maybeRead s = case reads s of
          [(x, rest)] | all isSpace rest -> Just x
          _         -> Nothing

There's an open ticket to add this to the base library.

More information about the Haskell-Cafe mailing list