There are currently three datatypes that are exposed in base that have
Monoid instances, but no Semigroup instances:
- Event (from GHC.Event)
- Lifetime (from GHC.Event)
(There is also EventLifetime in GHC.Event.Internal, but it is not exported
directly, so I didn't bother with it.)
Adding the Semigroup instances for these types directly in the modules in
which they're defined resulted in some horrific import cycles, so I opted to
take the easy approach of defining all of these instances in Data.Semigroup.
(When Semigroup becomes a superclass of Monoid, these instances will have
to be moved somehow.)
Fixes Trac #12464.