[project @ 2005-02-26 12:14:54 by panne]
[ghc-base.git] / Data / Monoid.hs
index cfc8dd2..bc8633b 100644 (file)
@@ -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