[Haskell-cafe] upgrading mtl1 to mtl2
Ross Paterson
ross at soi.city.ac.uk
Wed Feb 16 16:01:02 CET 2011
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.
More information about the Haskell-Cafe
mailing list