
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.