[Proposal] Add default implementation of mappend/mempty in terms of mconcat

Ben Millwood haskell at benmachine.co.uk
Sat Jan 25 22:06:24 UTC 2014


I'm not sure how I feel about the proposal, but I'd just like to add 
that in fact the laws for Monoid can also be expressed in terms of 
mconcat:

     mconcat [x] = x
     mconcat . concat = mconcat . map mconcat

(for those who appreciate that sort of thing, these are the laws for 
mconcat to be a monad algebra for the list monad).

On Fri, Jan 24, 2014 at 10:42:41PM +0100, Niklas Haas wrote:
>Hello,
>
>I noticed that the current Monoid class doesn't actually provide default
>implementations of mappend/mempty in terms of mconcat, even though this
>is technically very simple:
>
>> mempty = mconcat []
>> mappend a b = mconcat [a, b]
>
>This would be a rather small and non-invasive change that shouldn't
>break any existing programs. The main downside is that an empty Monoid
>declaration would produce no warnings, but #7633 gives us the ability to
>solve this.
>
>Discussion period: 2 weeks
>_______________________________________________
>Libraries mailing list
>Libraries at haskell.org
>http://www.haskell.org/mailman/listinfo/libraries


More information about the Libraries mailing list