[Haskell-cafe] upgrading mtl1 to mtl2
Evan Laforge
qdunkan at gmail.com
Wed Feb 16 06:51:29 CET 2011
On Tue, Feb 15, 2011 at 7:58 PM, Ivan Lazar Miljenovic
<ivan.miljenovic at gmail.com> wrote:
> On 16 February 2011 14:46, Evan Laforge <qdunkan at gmail.com> wrote:
>> 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?
>
> Use liftM instead of fmap if all of your functions are polymorphic in
> the type of Monad and you don't want to bother putting in the Functor
> constraint.
There are hundreds of 'fmap's in there too. And even more <$>s and a
scattering of <*>s. And... these functions are convenient! I like
using them. If "upgrading" to mtl2 means porting away from Functor
and Applicative... then that's even less of a "minor incompatibility"!
At least the class context mangling can be mostly done with search
and replace.
>> 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"?
>
> Yes, but some people don't want the extensions.
Ok, so does that mean the migration to transformers so mtl could be
deleted is cancelled? Or was rendered obsolete by mtl-2? Or maybe I
was imagining it? I think minimal extensions is a worthy goal, but
you can hardly position Y as "the next step" for X when all it is is X
minus features that people still like...
More information about the Haskell-Cafe
mailing list