monoid-extras-0.5: src/Data/Monoid/WithSemigroup.hs
{-# 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