[project @ 2005-10-25 09:29:16 by ross]
authorross <unknown>
Tue, 25 Oct 2005 09:29:16 +0000 (09:29 +0000)
committerross <unknown>
Tue, 25 Oct 2005 09:29:16 +0000 (09:29 +0000)
Now that Data.Monoid is portable, move Monoid instances for sets and
maps back to where the data types are defined.

Data/IntMap.hs
Data/IntSet.hs
Data/Map.hs
Data/Monoid.hs
Data/Set.hs

index f9ee03a..0dd6bf0 100644 (file)
@@ -136,6 +136,7 @@ import Prelude hiding (lookup,map,filter,foldr,foldl,null)
 import Data.Bits 
 import Data.Int
 import qualified Data.IntSet as IntSet
+import Data.Monoid (Monoid(..))
 import Data.Typeable
 
 {-
@@ -210,6 +211,11 @@ type Prefix = Int
 type Mask   = Int
 type Key    = Int
 
+instance Ord a => Monoid (IntMap a) where
+    mempty  = empty
+    mappend = union
+    mconcat = unions
+
 #if __GLASGOW_HASKELL__
 
 {--------------------------------------------------------------------
index 6220827..a47244f 100644 (file)
@@ -94,6 +94,7 @@ import Data.Bits
 import Data.Int
 
 import qualified Data.List as List
+import Data.Monoid (Monoid(..))
 import Data.Typeable
 
 {-
@@ -159,6 +160,11 @@ data IntSet = Nil
 type Prefix = Int
 type Mask   = Int
 
+instance Monoid IntSet where
+    mempty  = empty
+    mappend = union
+    mconcat = unions
+
 #if __GLASGOW_HASKELL__
 
 {--------------------------------------------------------------------
index 37a9695..cafb0a1 100644 (file)
@@ -150,6 +150,7 @@ module Data.Map  (
 import Prelude hiding (lookup,map,filter,foldr,foldl,null)
 import qualified Data.Set as Set
 import qualified Data.List as List
+import Data.Monoid (Monoid(..))
 import Data.Typeable
 
 {-
@@ -189,6 +190,11 @@ data Map k a  = Tip
 
 type Size     = Int
 
+instance (Ord k) => Monoid (Map k v) where
+    mempty  = empty
+    mappend = union
+    mconcat = unions
+
 #if __GLASGOW_HASKELL__
 
 {--------------------------------------------------------------------
index 0524727..e57b909 100644 (file)
@@ -27,14 +27,6 @@ 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.
@@ -128,23 +120,3 @@ newtype Product a = Product { getProduct :: a }
 instance Num a => Monoid (Product a) where
        mempty = Product 1
        Product x `mappend` Product y = Product (x * y)
-
-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
index 2029faa..9300127 100644 (file)
@@ -113,6 +113,7 @@ module Data.Set  (
 
 import Prelude hiding (filter,foldr,null,map)
 import qualified Data.List as List
+import Data.Monoid (Monoid(..))
 import Data.Typeable
 
 {-
@@ -146,6 +147,11 @@ data Set a    = Tip
 
 type Size     = Int
 
+instance Ord a => Monoid (Set a) where
+    mempty  = empty
+    mappend = union
+    mconcat = unions
+
 #if __GLASGOW_HASKELL__
 
 {--------------------------------------------------------------------