From: ross Date: Tue, 25 Oct 2005 09:29:16 +0000 (+0000) Subject: [project @ 2005-10-25 09:29:16 by ross] X-Git-Tag: Initial_conversion_from_CVS_complete~33 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=e42f2d710c07784c71bf57fe64fcbfb2005f6900;p=haskell-directory.git [project @ 2005-10-25 09:29:16 by ross] Now that Data.Monoid is portable, move Monoid instances for sets and maps back to where the data types are defined. --- diff --git a/Data/IntMap.hs b/Data/IntMap.hs index f9ee03a..0dd6bf0 100644 --- a/Data/IntMap.hs +++ b/Data/IntMap.hs @@ -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__ {-------------------------------------------------------------------- diff --git a/Data/IntSet.hs b/Data/IntSet.hs index 6220827..a47244f 100644 --- a/Data/IntSet.hs +++ b/Data/IntSet.hs @@ -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__ {-------------------------------------------------------------------- diff --git a/Data/Map.hs b/Data/Map.hs index 37a9695..cafb0a1 100644 --- a/Data/Map.hs +++ b/Data/Map.hs @@ -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__ {-------------------------------------------------------------------- diff --git a/Data/Monoid.hs b/Data/Monoid.hs index 0524727..e57b909 100644 --- a/Data/Monoid.hs +++ b/Data/Monoid.hs @@ -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 diff --git a/Data/Set.hs b/Data/Set.hs index 2029faa..9300127 100644 --- a/Data/Set.hs +++ b/Data/Set.hs @@ -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__ {--------------------------------------------------------------------