Proposal: Add missing Monoid for ZipList

Fumiaki Kinoshita fumiexcel at gmail.com
Sun Jul 26 03:23:13 UTC 2015


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

But +1 to the original one.

2015-07-26 5:50 GMT+09:00 Christopher Allen <cma at bitemyapp.com>:

>
> 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?
>
> I'd like to limit discussion to two weeks.
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150726/8dac4739/attachment.html>


More information about the Libraries mailing list