On 1 April 2011 21:59, Dmitry Olshansky olshansk...@gmail.com 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 -
Very interesting, thanks.
I didn't feel your classes yet... Do you think that provide these instances
for Iteratee is possible?
2011/4/2 Bas van Dijk v.dijk@gmail.com
On 1 April 2011 21:59, Dmitry Olshansky olshansk...@gmail.com wrote:
Is it possible to change enumFile to using MonadIO
Use enumHandle.
enumFile deals with the common case of read from the filesystem in IO. It
can't deal with general MonadIO monads because there'd be no guarantee that
the handle would actually be closed (eg, an ErrorT IO might never run the
cleanup).
If you need a special monad, do something
Bas van Dijk v.dijk@gmail.com wrote:
On 1 April 2011 21:59, Dmitry Olshansky olshansk...@gmail.com 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
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 e...@ertes.de
Bas van Dijk v.dijk@gmail.com wrote:
On 1 April 2011 21:59,
Dear collegues,
I use Iteratee with Monad Transformer stack in this way:
type MyMonad a b = Iteratee a (StateT StateType IO) b
I've wrote some Enumeratees using this type. Then I want to compose it with
standard enumerator like Data.Enumerator.Binary.enumFile.
But enumFile use IO monad instead
On 4/1/11 3:59 PM, Dmitry Olshansky wrote:
But enumFile use IO monad instead of MonadIO class.
[...]
Is it possible to change enumFile to using MonadIO class?
Unless its changed significantly since I looked at it last (which it may
well have), it's not possible. The problem is that what we'd