Proposal: newtype for applicatives of monoids
David Casperson
casper at unbc.ca
Mon Aug 3 20:29:01 UTC 2015
On 2015-08-03, Mario Blažević wrote:
> Date: Mon, 3 Aug 2015 10:22:56
> From: Mario Blažević <blamario at ciktel.net>
> To: libraries at haskell.org
> Subject: Re: Proposal: newtype for applicatives of monoids
>
> 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.
+1, with mappend.
(I just tripped over the Monad instance of the same thing. It's
very nice to be able to use (<>) on something like Monad m =>
Control.Monad.Trans.Exception m () .)
Cheers,
David
--
David Casperson, PhD, R.P., | David.Casperson at unbc.ca
Associate Professor and Chair, | (250) 960-6672 Fax 960-5544
Computer Science | 3333 University Way
University of Northern British Columbia | Prince George, BC V2N 4Z9
| CANADA
More information about the Libraries
mailing list