
On Tue, Feb 15, 2011 at 07:46:29PM -0800, Evan Laforge wrote:
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?
If you're using Monad m to get Functor or Applicative instances for a functor built from m, then I'm afraid you will need to add (Functor m) or (Applicative m) to the constraints in most cases.
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?
monads-fd is deprecated is favour of mtl-2, but transformers isn't. Now you have a choice: use the portable transformers or the functional dependencies of mtl. Either choice is compatible with other packages, because both ultimately rest on transformers.
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"?
Good point -- I've added such a caveat.