
Ertugrul,
thanks for information. I've found several decisions for my real problem
(using enumHandle and some more special decision).
But I'll be have in mind about monad-control.
2011/4/3 Ertugrul Soeylemez
Bas van Dijk
wrote: On 1 April 2011 21:59, Dmitry Olshansky
wrote: Is it possible to change enumFile to using MonadIO class?
No because it uses the control operation Control.Exception.finally :: IO a -> IO b -> IO a internally. You can't lift control operations with liftIO :: MonadIO m => IO a -> m a.
However if you are able to define a MonadTransControl and MonadControlIO instance (from the monad-control package[1]) for Iteratee and use Control.Exception.Control.finally instead of the regular finally, you can use your MyMonad with the modified enumFile.
I don't think that's possible, because Iteratee is based on CPS. I think, so far nobody has come up with an instance definition for monad-peel or monad-control for CPS-based monads like ContT or Iteratee.
However, it is easy to write an own handle enumerator, which uses monad-peel or monad-control exception handling to convert errors to iteratee exceptions. On the other hand, as has been noted, there is enumHandle, which does that by itself.
Greets, Ertugrul
-- nightmare = unsafePerformIO (getWrongWife >>= sex) http://ertes.de/
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe