At Thu, 21 Jun 2012 10:11:24 +0100 (BST),
Rouan van Dalen wrote:
> Hi everyone,
>
> Can anyone shed some light on why the succ and pred functions of the Enum
> typeclass throw
> exceptions if we go over the upper or lower boundary, and not return Maybe a?
>
> I was hoping to have some functions like:
>
> safeSucc :: (Enum a) => a -> Maybe a
>
> Because the succ and pred functions throw exceptions I can only catch them in
> the IO monad. This makes it hard to deal with this situation in pure code.
>
> Regards
>
> Rouan.
That decision was most likely dictated by the convenience of now
having the Maybe - and remember that many Enum data types are not
bounded anyway, so they would never need that.
In any case, you can easily roll your own
safeSucc :: (Enum a, Bounded a) => a -> Maybe a
safeSucc x | x == maxBound = Nothing
| otherwise = Just (succ x)
Francesco.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe