    {-# LANGUAGE ConstraintKinds      #-}
    {-# LANGUAGE CPP                  #-}
    {-# LANGUAGE FlexibleInstances    #-}
    {-# LANGUAGE UndecidableInstances #-}

    {-# OPTIONS_GHC -fno-warn-unused-imports #-}
    -----------------------------------------------------------------------------
    -- |
    -- Module      :  Data.Monoid.WithSemigroup
    -- Copyright   :  (c) 2011 diagrams-core team (see LICENSE)
    -- License     :  BSD-style (see LICENSE)
    -- Maintainer  :  diagrams-discuss@googlegroups.com
    --
    -- Convenience alias for the combination of @Monoid@ and @Semigroup@ constraints.
    --
    -----------------------------------------------------------------------------

    module Data.Monoid.WithSemigroup
           ( Monoid'
           ) where

    import           Data.Semigroup

    -- | For base < 4.11, the @Monoid'@ constraint is a synonym for things
    --   which are instances of both 'Semigroup' and 'Monoid'.  For base
    --   version 4.11 and onwards, @Monoid@ has @Semigroup@ as a
    --   superclass already, so for backwards compatibility @Monoid'@ is
    --   provided as a synonym for @Monoid@.
    #if MIN_VERSION_base(4,11,0)
    type Monoid' = Monoid
    #else
    type Monoid' m = (Semigroup m, Monoid m)
    #endif