Proposal: newtype for applicatives of monoids

Mario Blažević blamario at ciktel.net
Mon Aug 3 17:22:56 UTC 2015


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.


More information about the Libraries mailing list