Proposal: Add missing Monoid for ZipList

Oleg Grenrus oleg.grenrus at iki.fi
Sun Jul 26 06:20:53 UTC 2015


> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150726/c7e37a6a/attachment.sig>


More information about the Libraries mailing list