
They definitely should be in both, since the default implementations of <$> and <$ f <$> x = pure f <*> x f <$ x = const f <*> x may be less efficient than a special implementation having more knowledge about applicative. Doaitse PS: for that reason they are for almost 20 years now member of the class IsParser in http://hackage.haskell.org/package/uulib-0.9.16/docs/UU-Parsing-Interface.ht... http://hackage.haskell.org/package/uulib-0.9.16/docs/UU-Parsing-Interface.ht... , which inspired the introduction of Applicative and Alternative in the first place.
On 27 Feb 2015, at 5:45 , Edward Kmett
wrote: On Thu, Feb 26, 2015 at 6:37 PM, Greg Fitzgerald
mailto:garious@gmail.com> wrote: Those operators are for Power Users - why put them in the Prelude? .. because without them that whole Applicative thing that we're bringing in as a superclass of Monad with the AMP is cut off at the knees.
Applicative sugar is typically used like
both f (x,y) = (,) <$> x <*> y
or
traverse f (x:xs) = (:) <$> f x <*> traverse f xs traverse f [] = pure []
Without (<$>), (<*>) from Applicative is quite difficult to use.
both f (x,y) = pure (,) <*> x <*> y
is much less efficient and
both f (x,y) = fmap (,) x <*> y
is painfully far from idiomatic.
-Edward
-Greg
Dne út 24. 2. 2015 16:39 uživatel Edward Kmett
mailto:ekmett@gmail.com> napsal: We have a couple of weeks until the third release candidate for GHC 7.10 goes out the door.
Along the way with the last couple of release candidates folks have found some problems with the way we implemented the AMP. [1][2]
Most notably, we failed to include (<$>) in the Prelude, so the standard idiom of
foo <$> bar <*> baz <*> quux
doesn't work out of the box!
I'd like to include (<$>) in the Prelude in RC3.
I'd also like to invite discussion about whether folks believe we should include (<$) out of the box.
(<$) has been a member of Functor for a long time, which is only visible if you import it from Data.Functor or bring in Control.Applicative. There is an idiom that you use (<*) and (<$) to point to the parts of the structure that you want to keep the answers from when building longer such Applicative chains.
Discussion Period: 2 weeks
Thank you, -Edward Kmett
[1] http://www.reddit.com/r/haskell/comments/2wzixa/shouldnt_be_in_prelude/ http://www.reddit.com/r/haskell/comments/2wzixa/shouldnt_be_in_prelude/ [2] https://plus.google.com/115504368969270249241/posts/URzeDWd7qMp https://plus.google.com/115504368969270249241/posts/URzeDWd7qMp _______________________________________________ Libraries mailing list Libraries@haskell.org mailto:Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org mailto:Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries