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