[Haskell-cafe] upgrading mtl1 to mtl2

Evan Laforge qdunkan at gmail.com
Wed Feb 16 04:46:29 CET 2011

I just got started on this because packages are starting to use mtl2.
I had hoped it would be simple, and hopefully it is, but...

Do I really have to add (Functor m) to the 300 or so functions with
(Monad m) on them?  Or just not use fmap or applicative?

Ow.  Not what I would call "small incompatibilities."  Is there a more
graceful way to get around this?

So I thought if it's going to be this much of a hassle I might as well
just port to transformers, which I gather is supposed to be the future
anyway.  But transformers is lacking the classes, and I gather they're
in monads-tf and monads-fd.  But monads-fd says it's now deprecated
because of the existence of mtl-2.  So what's the story?  Has
transformers now turned around and been deprecated in favor of mtl-2?
Should I just keep using mtl but port to mtl-2?  Or is there some
other non-obsolete package for transformers?  This page:


Says that the only benefit of 'transformers' is that it's "haskell 98
and thus more portable," but doesn't that come with the caveat that
"only if you don't use classes and do all the lifting manually"?

More information about the Haskell-Cafe mailing list