    {-# LANGUAGE Safe #-}
    {-# OPTIONS_GHC -Wno-orphans #-}

    module Generics.Deriving.Semigroup (module Generics.Deriving.Semigroup.Internal) where

    import Data.Semigroup (WrappedMonoid(..))

    import Generics.Deriving.Monoid.Internal (GMonoid(..))
    import Generics.Deriving.Semigroup.Internal

    instance GMonoid m => GSemigroup (WrappedMonoid m) where
      gsappend :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m
    gsappend (WrapMonoid m
    a) (WrapMonoid m
    b) = m -> WrappedMonoid m
    forall m. m -> WrappedMonoid m
    WrapMonoid (m -> m -> m
    forall a. GMonoid a => a -> a -> a
    gmappend m
    a m
    b)