Hello,
Why not allow an arbitrary monad?
readM :: (Monad m, Read a) => String
-> String -> m a
readM errMsg s = case reads s of
    [(x, "")] ->
return x
    _ -> fail errMsg
-Jeff
libraries-bounces@haskell.org wrote on 02/07/2008
01:46:48 PM:
> 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
> 
> Consideration period: 1 week.
> 
> Patch to Text.Read attached.
> 
> [attachment "maybeRead.patch" deleted by Jeff Polakow/db/dbcom]
> _______________________________________________
> Libraries mailing list
> Libraries@haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
---
This e-mail may contain confidential and/or privileged information. If you 
are not the intended recipient (or have received this e-mail in error) 
please notify the sender immediately and destroy this e-mail. Any 
unauthorized copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.