broken Monad Either instance?
ekmett at gmail.com
Sat Dec 3 10:22:12 CET 2011
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 <twanvl at gmail.com> wrote:
> 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.
> Libraries mailing list
> Libraries at haskell.org
More information about the Libraries