[Haskell-cafe] ErrorT instance of MonadPlus
Dmitry Olshansky
olshanskydr at gmail.com
Fri Feb 26 13:01:20 EST 2010
Hello,
ErrorT instance of MonadPlus define that in case of fail both arguments of
mplus a value of Error will be the Error of second computation:
m `mplus` n = ErrorT $ do a <- runErrorT m case a of
Left _ -> runErrorT n Right r -> return (Right
r)
Could it be changed in this way:
m `mplus` n = ErrorT $ do a <- runErrorT m case a of
Left e -> do
b <- runErrorT n
case b of
Left e' -> return $ Left (e `eplus` e')
r -> return r
r -> return r
where `eplus` could be placed in class Error a:
eplus :: a -> a -> a
eplus x y = y -- default implementation
In this case we could combine Errors more flexible.
Best regards,
Dmitry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100226/0be63bc5/attachment.html
More information about the Haskell-Cafe
mailing list