
This would be wonderful, but as you noted, the obvious choice conflicts with the unfortunately named Error class used for ErrorT's argument. I usually use err, Err and runErr in my own code for what you describe.
Sent from my iPad
On Dec 2, 2011, at 11:13 AM, Twan van Laarhoven
On 30/11/11 13:55, Christian Maeder wrote:
Yes, thanks, this works and is worth knowing. It looks a bit ugly but is shorter than making a new monad.
Prelude Control.Monad.Identity Control.Monad.Error> runIdentity . runErrorT $ fail "bla" :: Either String () Left "bla"
We should also add a type synonym for Error, like there is for Reader, State and RWS:
type Error e a = ErrorT e a error :: Either e a -> Error e a error = ErrorT . Indentity runError :: Error e a -> Either e a runError = runIdentity . runErrorT mapError :: Error e a -> Error f a mapError f = mapErrorT (Identity . f . runIdentity)
The only problem is that the name 'Error' is taken by a typeclass, and 'error' by everyone's least favorite prelude function.
Twan
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries