restructuring the mtl

Conal Elliott conal at
Tue Mar 27 13:53:42 EDT 2007

Speaking of Identity, are there compelling reasons for it to be under
Control.Monad?  Of course Identity is a Monad, but it's in many other type
classes as well.  Similarly, I wonder why Monad is under Control, since
monads are not always about control.

More deeply, I wonder if type classes and module hierarchy are adversarial
notions.  Type classes are powerful because they cut across many different
kinds of uses.  Thus exactly where they're useful, they're also hard to
classify (assign to a slot in the hierarchy).

Just to be clear: I'm raising an issue for discussion.  I don't have a
proposal or even a direction.

- Conal

On 3/26/07, Neil Mitchell <ndmitchell at> wrote:
> Hi
> I'm not a massive Control.Monad user, but:
> > The plan is to split Control.Monad.Identity, Control.Monad.Trans and
> > Control.Monad.Trans.* off into a separate (portable) package.
> Isn't Control.Monad.Identity very simple, very short and totally
> Haskell 98? Why can't it go in the standard MTL? I've only used State
> and Identity out of all the monads in MTL.
> Thanks
> Neil
> _______________________________________________
> Libraries mailing list
> Libraries at
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Libraries mailing list