David: I think the resistance you're seeing is coming from the fact that- at least in my experience- liftMN is not considered good, idiomatic Haskell code, since the idea is expressed *better* by <$> and <*>. There's been a downside until now that <$> and <*> introduced a different constraint (Applicative instead of Monad) but, as you already mention, AMP will solve that.

So- at least for me- adding in liftA2... would be a step *backwards*, since it encourages people to avoid the idiomatic solution for the non-idiomatic solution. In fact, I wouldn't be surprised if you'd get less resistance to the idea of deprecating liftM2... (though please *don't* propose that, there's no need to break backwards compatibility).

But let me ask something else: why not just change the type signature of liftM2... to have an Applicative constraint instead of a Monad constraint? Besides the funny naming, that would seem to address your concern, without increasing the number of non-idiomatic combinators.

On Thu, Nov 6, 2014 at 6:44 AM, David Feuer <david.feuer@gmail.com> wrote:
Sure you could, but that would be kind of silly. liftMN should either be defined as liftAN or should be defined using the Monad ops as they have in the past. I was trying to make Base a little smaller by using the first approach, but it's not a big deal to repeat everything with specializations and unfoldings.

On Wed, Nov 5, 2014 at 11:14 PM, Carter Schonwald <carter.schonwald@gmail.com> wrote:
umm.... you can use  <*> to define the liftAN operations right? Couldn't you just directly use <*> and pure to define the liftMN ones?

On Wed, Nov 5, 2014 at 9:32 PM, David Feuer <david.feuer@gmail.com> wrote:
Well, I'm looking to define  liftM = liftA, liftM2 = liftA2, liftM3 = liftA3, and (with a modified definition of ap) I'm getting that to work, but that leaves liftM4 and liftM5 hanging.

On Wed, Nov 5, 2014 at 9:30 PM, John Lato <jwlato@gmail.com> wrote:
Does anyone actually want these?  I would have thought we should go the other way and deprecate `liftM3+` in favor of using `<*>`.

On Thu Nov 06 2014 at 10:26:36 AM David Feuer <david.feuer@gmail.com> wrote:
Since Applicative is supposed to be important now, I figure we should get these in.
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries


_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries




_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries