Proposal: newtype for applicatives of monoids

David Feuer david.feuer at gmail.com
Mon Jul 27 03:34:42 UTC 2015


Sorry for the terrible title, but I think we should add something like the
following to Data.Monoid (I already mentioned this in the discussion of a
Monoid instance for ZipList).

newtype Appl f m = Appl (f m)

instance (Applicative f, Monoid m) => Monoid (Appl f m) where
  mempty = Appl $ pure mempty
  mplus (Appl x) (Appl y) = Appl $ liftA2 mplus x y

It may be possible to use coercions to improve mplus; I haven't tried it.

This type is the same as WrappedApplicative from semigroupoids, do it might
be best just to give it that name.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150726/7c818808/attachment.html>


More information about the Libraries mailing list