
It's called "monad transformers" func1' :: Int -> EitherT Error IO String func1' n = EitherT $ func1 n func2' :: Int -> EitherT Error IO String func2' s = EitherT $ func2 n runCalc' :: Int -> EitherT Error IO [String] runCalc' param = func1' param >>= func2' runCalc :: Int -> IO (Either Error [String]) runCalc param = runEitherT $ runCalc param (EitherT is on Hackage) On 2 May 2010, at 01:37, Eugeny N Dzhurinsky wrote:
Hello!
I have some sort of strange question:
assume that there are 2 functions
func1 :: Int -> IO (Either Error String) func2 :: String -> IO (Either Error [String])
in case if there will be no IO involved, I could use Control.Monad.Either and write something like
runCalc :: Int -> IO (Either Error [String]) runCalc param = func1 param >>= func2
but with that IO stuff I can't simply do in this way. Can somebody please suggest, how to combine IO and Either monads, if that's even possible?
Thank you in advance!
-- Eugene Dzhurinsky _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe