Proposal: Add missing Monoid for ZipList

Oleg Grenrus oleg.grenrus at iki.fi
Sun Jul 26 06:30:37 UTC 2015


Sorry, that seems to be exactly the instances which is originally proposed.

> On 26 Jul 2015, at 09:20, Oleg Grenrus <oleg.grenrus at iki.fi> wrote:
> 
> 
>> On 26 Jul 2015, at 06:43, M Farkas-Dyck <strake888 at gmail.com> wrote:
>> 
>> On 26/07/2015 at 12:23:13 +0900, Fumiaki Kinoshita wrote:
>>> There is another possible instance:
>>> 
>>> instance Semigroup a => Monoid (ZipList a) where
>>> mempty = ZipList []
>>> mappend (ZipList xs0) (ZipList ys0) = ZipList (mappend xs0 ys0) where
>>>   go (x:xs) (y:ys) = x <> y : go xs ys
>>>   go xs [] = xs
>>>   go [] ys = ys
>> 
>> This breaks the identity law.
> 
>    instance Monoid a a => Monoid (ZipList a) where
>      mempty = ZipList (repeat mempty)
>      mappend (ZipList xs) (ZipList ys) = ZipList (zipWith (<>) xs ys)
> 
> No preference on actual proposal or the instance. I have no strong opinion whether Alternative and Monoid1 should be the same.
> 
> Cheers,
> Oleg Grenrus
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries


More information about the Libraries mailing list