
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: http://haskell.org/haskellwiki/Monad_Transformers 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"?