[Haskell-cafe] Catching string from error function with GHC
ia at stryx.demon.co.uk
Mon Jan 2 20:29:47 EST 2006
I've just been through the process of converting some code from using Control.Exception to
using an Error monad, and I would recommend that as a more straightforward and
manageable alternative, unless you need Control.Exception for other reasons.
I started by changing my potentially-failing functions to return Either Exception a,
where Exception is my own user-defined error type, but you could use String, and a is the
type of the "real" return value. I initially used explicit Left and Right to construct appropriate
values. My testing code is hand-written, and explicitly matched against Left e and Right x to
decode the return value.
I ended up with functions returning MonadError Exception m => m a, using throwError and
return to construct appropriate values. My testing code uses
ErrorT Exception (StateT s IO) a
to manage a combination of error-handling, state (an error count) and IO, with the option of
using Either Exception to test expected errors for individual cases.
Iain Alexander ia at stryx.demon.co.uk
More information about the Haskell-Cafe