<html><head><style>p{margin-top:0px;margin-bottom:0px;}</style></head><body><!--  --><div style="font-size:10pt; font-family:NanumGothic, 나눔고딕, sans-serif;"><p>I aim to make the semantic consistent compared to that of other type classes (here Maybe).</p><p> </p><p>Also note that your instance is identical to upcoming Ap, as Ap (ZipList a). I also aim to make Monoids as diverse as possible. </p><p> </p><p> </p><p style="font-size:10pt;font-family:sans-serif;padding:0 0 0 10pt"><span>-----Original Message-----</span><br><b>From:</b> "Andrew Martin"<andrew.thaddeus@gmail.com> <br><b>To:</b> "박신환"<ndospark320@naver.com>; <br><b>Cc:</b> "Haskell Libraries"<libraries@haskell.org>; <br><b>Sent:</b> 2018-05-03 (목) 21:05:24<br><b>Subject:</b> Re: Monoid for ZipList<br> </p><div dir="ltr">There is another possible instance. We can instead write:<div> </div><div>    instance Semigroup a => Semigroup (ZipList a) where</div><div>      (<>) = liftA2 (<>)</div><div>    instance Monoid a => Monoid (ZipList a) where</div><div>      mempty = pure mempty</div><div> </div><div>This behaves differently, and it is also law-abiding.</div></div><div> </div>



</div>

</body></html><table style='display:none'><tr><td><img src="https://mail.naver.com/readReceipt/notify/?img=JqFCbHFTpz%2FYaqgZKrRZMqi0p4tXpoI0F4ErFA2ZKz3oMrEdKqvZaA34Mob9Kq0gMX%2B0MouZ74lR74lcWNFlbX30WLloWrdQarwGMNiCb400bdIcMBFOp6wn74eZpm%3D%3D.gif" border="0"/></td></tr></table>