Could iteratee depend on mtl instead of transformers?

John Lato jwlato at
Wed Nov 18 05:27:36 EST 2009

> Date: Tue, 17 Nov 2009 11:59:56 +0100 (CET)
> From: Henning Thielemann <lemming at>
> On Tue, 17 Nov 2009, Valery V. Vorotyntsev wrote:
>> Thus, the question is: are there any transformers-specific features
>> iteratee package needs, or can it just go with mtl?
> The question is, whether Iteratee needs functions of MTL that transformers
> does not provide? 'Transformers' is the more basic package, entirely
> Haskell 98, thus should be prefered. It is however sad, that Transformers
> cannot easily be used with GHCi in parallel with MTL installed. I was
> always against that ... Renaming Control.Monad.Trans and
> Control.Monad.Identity to something else would solve the conflict. I'm
> also not happy, that you have to choose between monads-fd and monads-tf. I
> think it would be better to be able to have both type class approaches.

Iteratee does not need any MTL functions that transformers does not
provide.  It does the following:

1) implement instances of MonadTrans and MonadIO
2) uses lift and liftIO (polymorphically)

There's no technical reason iteratee couldn't use mtl, and as Erik
mentions, if you change the dependency it works just fine.  For
myself, I can be swayed by user demand, although I'd like to see the
outcome of this discussion before committing to any changes.

In all honesty, I never thought iteratee would generate enough
interest for this to matter.  It's not a particularly popular package.


More information about the Libraries mailing list