X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FMonoid.hs;h=bc8633bbd028b982063ff479a34d56803d2be70d;hb=a4860575fcc59c6fcdf9f7fe74e137264dc05da8;hp=cfc8dd278e493542df1c8b6af4f92f662a4293ec;hpb=67264542e091745a650c536345581359202b6824;p=ghc-base.git diff --git a/Data/Monoid.hs b/Data/Monoid.hs index cfc8dd2..bc8633b 100644 --- a/Data/Monoid.hs +++ b/Data/Monoid.hs @@ -23,6 +23,14 @@ module Data.Monoid ( ) where import Prelude +import Data.Map ( Map ) +import qualified Data.Map as Map hiding ( Map ) +import Data.IntMap ( IntMap ) +import qualified Data.IntMap as IntMap hiding ( IntMap ) +import Data.Set ( Set ) +import qualified Data.Set as Set hiding ( Set ) +import Data.IntSet ( IntSet ) +import qualified Data.IntSet as IntSet hiding ( IntSet ) -- --------------------------------------------------------------------------- -- | The monoid class. @@ -88,3 +96,23 @@ instance Monoid Ordering where LT `mappend` _ = LT EQ `mappend` y = y GT `mappend` _ = GT + +instance (Ord k) => Monoid (Map k v) where + mempty = Map.empty + mappend = Map.union + mconcat = Map.unions + +instance Ord a => Monoid (IntMap a) where + mempty = IntMap.empty + mappend = IntMap.union + mconcat = IntMap.unions + +instance Ord a => Monoid (Set a) where + mempty = Set.empty + mappend = Set.union + mconcat = Set.unions + +instance Monoid IntSet where + mempty = IntSet.empty + mappend = IntSet.union + mconcat = IntSet.unions