Proposal: Make Semigroup as a superclass of Monoid

Michael Snoyman michael at
Sun Mar 29 12:23:54 UTC 2015

I'm tentatively +1 on this proposal, presuming we have a solid migration
path for the semigroups package (which seems trivial if Edward's on board
with this), and barring any solid objections in this discussion.

On Sun, Mar 29, 2015 at 3:21 PM Jeremy <voldermort at> wrote:

> The proposal to make Semigroup a superclass of Monoid was discussed a while
> ago [1], and the conclusion was to "put this off until the dust has settled
> from the AMP and FT changes".
> Now that 7.10 is out, I would like to re-propose. The proposed plan is
> similar to AMP, but less invasive, as (in my subjective experience)
> user-defined Monoids are much less common than user-defined Monads.
> 1. GHC 7.12 will include Semigroup and NonEmpty in base. All Monoid
> instances, and anything else which forms a Semigroup, will have a Semigroup
> instance. GHC will issue a warning when it encounters an instance of Monoid
> which is not an instance of Semigroup.
> 2. GHC >7.12 will define Monoid as a subclass of Semigroup.
> Stage 2 could be delayed - or in the extreme case, cancelled - if the
> warnings following stage 1 indicate that the proposal would cause
> significant breakage of existing code, although this is not anticipated.
> The rationale for this change is:
> 1. Semigroup is a popular package (this is relevant in combination with the
> following point).
> 2. Using an existing Monoid as a Semigroup requires redefining it (or
> WrappedMonoid), leading to much boilerplate and duplication.
> 3. NonEmpty is often redefined by beginners (or those who don't think it's
> worth having an extra dependency for).
> [1]
> --
> View this message in context: http://haskell.1045720.n5.
> Monoid-tp5767835.html
> Sent from the Haskell - Libraries mailing list archive at
> _______________________________________________
> Libraries mailing list
> Libraries at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list