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