Fwd: Applicative-based definitions in Data.Foldable

Isaac Elliott isaace71295 at gmail.com
Fri Dec 21 01:22:22 UTC 2018


With the introduction of the 'Ap' monoid in base-4.13, it seems like
Applicative based definitions for common folds would be appropriate in base.

For example:

> allA :: (Applicative f, Foldable t) => (a -> f Bool) -> t a -> f Bool
> allA f = fmap getAll . getAp . foldMap (Ap . fmap All . f)
>


> all :: Foldable t => (a -> Bool) -> t a -> Bool
> all f = runIdentity . allA (Identity . f)


I've personally written the Applicative version in everyday code. Thoughts?

Isaac
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181221/49c2e201/attachment.html>


More information about the Libraries mailing list