On Sat, 25 Jul 2015, Christopher Allen wrote:
http://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Applicative.html#t:ZipList
There's a Monoid that matches what the Applicative for ZipList does that seems to be missing.
instance Monoid a => Monoid (ZipList a) where
mempty = pure mempty
mappend = liftA2 mappend
It's been brought up before:
https://mail.haskell.org/pipermail/haskell-cafe/2009-October/067861.html
Not only is it useful when it's the Monoid you want, but it serves an educational purpose for highlighting the relationship between Monoid and Applicative as well.
Are there any good reasons not to have it?
The Monoid instance for lists is not related to Applicative list instance - so why should the instances for ZipList? We could as well use the Monoid list implementation for ZipLists. If there is no actual application for the instance I would leave it unimplemented.