Add missing Semigroup instances for Monoidal datatypes in base

Authored by RyanGlScott on Oct 14 2016, 9:30 AM.

Description

Add missing Semigroup instances for Monoidal datatypes in base

Summary:
There are currently three datatypes that are exposed in base that have
Monoid instances, but no Semigroup instances:

  • IO
  • 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.

Test Plan: It compiles

Reviewers: hvr, ekmett, austin, bgamari

Reviewed By: ekmett

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2588

GHC Trac Issues: Trac #12464

Details

Committed
RyanGlScottOct 14 2016, 9:30 AM
Pushed
mpickeringOct 15 2016, 7:51 AM
Reviewer
ekmett
Differential Revision
D2588: Add missing Semigroup instances for Monoidal datatypes in base
Parents
rGHCDIFF90df91a067ec: PrelInfo: Fix style
Branches
Unknown
Tags
Unknown