
3 Aug
2015
3 Aug
'15
1:22 p.m.
On 07/26/2015 11:34 PM, David Feuer wrote:
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
The method is called mappend, not mplus. Otherwise +1.
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.
The name Appl is the best fit with the recently-added Alt newtype, so I prefer it.