
I don't feel strongly about it, but that seems like a reasonable plan.
On Thu, Nov 6, 2014 at 1:31 AM, Michael Snoyman
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
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
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
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
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