Proposal: newtype for applicatives of monoids

David Feuer david.feuer at
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: <>

More information about the Libraries mailing list