Proposal: Add Text.Read.maybeRead :: Read a => String -> Maybe a

Ross Paterson ross at soi.city.ac.uk
Thu Feb 7 18:12:43 EST 2008


On Thu, Feb 07, 2008 at 10:46:48AM -0800, Don Stewart wrote:
> This function is typically defined once per project. So its
> about time this safe variant of 'read' made it into the base.
> 
>     maybeRead :: Read a => String -> Maybe a
>     maybeRead s = case reads s of
>         [(x, "")] -> Just x
>         _         -> Nothing

I think this is a good idea, though I normally write the equivalent of

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

and would prefer not to generalize it to any monad.  fail is a wart,
not a design pattern.

> Consideration period: 1 week.

I think that's too short, and the recent fashion of 2 weeks is too short,
even for an uncontroversial change.  Some people aren't here continuously,
but I'd still like to get their input.


More information about the Libraries mailing list