A more useful Monoid instance for Data.Map

Roman Cheplyaka roma at ro-che.info
Sun Jan 6 11:20:54 CET 2013


* Herbert Valerio Riedel <hvr at gnu.org> [2013-01-06 11:15:46+0100]
> Roman Cheplyaka <roma at ro-che.info> writes:
> 
> > But there's another problem... The "right" instance should really be
> > based on Semigroup, not Monoid, but Semigroup is not currently in the
> > base. And adding a dependency on semigroups to containers is hardly an
> > option.
> 
> just to be clear, do you propose the instance to read
> 
>   instance (Ord k, Semigroup v) => Monoid (Map k v)
> 
> or rather
> 
>   instance (Ord k, Semigroup v) => Semigroup (Map k v)

The former, where mempty = Map.empty. (But the latter would also be
present, since every monoid is (mathematically) a semigroup.)

Roman



More information about the Libraries mailing list