On Sat, May 01, 2010 at 02:42:26PM -0700, Ryan Ingram wrote: > Check out ErrorT in Control.Monad.Error > > > :t ErrorT > ErrorT :: m (Either e a) -> ErrorT e m a
At this point I am lost. I'm not sure that I do understand this type transformation correctly. So we have some sort of monadic type m, error type e and resut of type a. If m = IO, e - Error, a - String, than ErrorT :: IO (Either Error String) -> ErrorT Error IO String I can think that can be written as ErrorT :: IO (Either Error String) -> ErrorT Error (IO String) Am I correct? > So, if you can make your Error type an instance of this class, you can do > this: > runCalc = runErrorT (ErrorT (func1 p) >>= ErrorT . func2) Sorry, I don't understand how does it work. Can you please explain the type transformations involved here? Thank you in advance! -- Eugene N Dzhurinsky
pgpogj49pOZL5.pgp
Description: PGP signature
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe