[Proposal] Add instance Monoid a => Monoid (Const a b)
haskell at nand.wakku.to
haskell at nand.wakku.to
Sun Sep 29 16:01:23 UTC 2013
Hello,
I think this a Monoid instance on Const would be useful. The motivation comes
from ‘lens’, where folds come out as (a -> Const a a) -> s -> Const a s. This
instance, together with the Monoid a => Monoid (r -> a) instance, allows folds
themselves to be an instance of Monoid, allowing for some really pretty code.
Example of the instance body:
> instance Monoid a => Monoid (Const a b) where
> mempty = Const mempty
> mappend (Const a) (Const b) = Const (mappend a b)
Examples of it being used together with lens:
>>> "Hello, world!" ^.. mconcat [ix 2, ix 7, ix 1]
"lwe"
Discussion Period: 2 weeks
More information about the Libraries
mailing list