Repository : ssh://darcs.haskell.org//srv/darcs/packages/containers

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/963049d281a827bb83109d81115ff544eb8708dc

>---------------------------------------------------------------

commit 963049d281a827bb83109d81115ff544eb8708dc
Author: Milan Straka <[email protected]>
Date:   Wed Jul 13 12:33:22 2011 +0200

    Implement more methods from Foldable class.
    
    Add specialised fold, foldl and foldr implementations.

>---------------------------------------------------------------

 Data/IntMap.hs |   15 ++++++++++-----
 Data/Map.hs    |   13 ++++++++-----
 Data/Set.hs    |   10 +++++++---
 3 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/Data/IntMap.hs b/Data/IntMap.hs
index 99b2ddb..7badc08 100644
--- a/Data/IntMap.hs
+++ b/Data/IntMap.hs
@@ -189,7 +189,7 @@ import qualified Data.IntSet as IntSet
 import Data.Monoid (Monoid(..))
 import Data.Maybe (fromMaybe)
 import Data.Typeable
-import Data.Foldable (Foldable(foldMap))
+import qualified Data.Foldable as Foldable
 import Data.Traversable (Traversable(traverse))
 import Control.Applicative (Applicative(pure,(<*>)),(<$>))
 import Control.Monad ( liftM )
@@ -288,10 +288,15 @@ instance Monoid (IntMap a) where
     mappend = union
     mconcat = unions
 
-instance Foldable IntMap where
-    foldMap _ Nil = mempty
-    foldMap f (Tip _k v) = f v
-    foldMap f (Bin _ _ l r) = foldMap f l `mappend` foldMap f r
+instance Foldable.Foldable IntMap where
+  fold Nil = mempty
+  fold (Tip _ v) = v
+  fold (Bin _ _ l r) = Foldable.fold l `mappend` Foldable.fold r
+  foldr = foldr
+  foldl = foldl
+  foldMap _ Nil = mempty
+  foldMap f (Tip _k v) = f v
+  foldMap f (Bin _ _ l r) = Foldable.foldMap f l `mappend` Foldable.foldMap f r
 
 instance Traversable IntMap where
     traverse _ Nil = pure Nil
diff --git a/Data/Map.hs b/Data/Map.hs
index cd63266..cec0eff 100644
--- a/Data/Map.hs
+++ b/Data/Map.hs
@@ -218,7 +218,7 @@ import qualified Data.List as List
 import Data.Monoid (Monoid(..))
 import Control.Applicative (Applicative(..), (<$>))
 import Data.Traversable (Traversable(traverse))
-import Data.Foldable (Foldable(foldMap))
+import qualified Data.Foldable as Foldable
 import Data.Typeable
 
 #if __GLASGOW_HASKELL__
@@ -2457,10 +2457,13 @@ instance Traversable (Map k) where
   traverse f (Bin s k v l r)
     = flip (Bin s k) <$> traverse f l <*> f v <*> traverse f r
 
-instance Foldable (Map k) where
-  foldMap _f Tip = mempty
-  foldMap f (Bin _s _k v l r)
-    = foldMap f l `mappend` f v `mappend` foldMap f r
+instance Foldable.Foldable (Map k) where
+  fold Tip = mempty
+  fold (Bin _ _ v l r) = Foldable.fold l `mappend` v `mappend` Foldable.fold r
+  foldr = foldr
+  foldl = foldl
+  foldMap _ Tip = mempty
+  foldMap f (Bin _ _ v l r) = Foldable.foldMap f l `mappend` f v `mappend` 
Foldable.foldMap f r
 
 {--------------------------------------------------------------------
   Read
diff --git a/Data/Set.hs b/Data/Set.hs
index 5ef1f42..ea0e571 100644
--- a/Data/Set.hs
+++ b/Data/Set.hs
@@ -138,7 +138,7 @@ module Data.Set (
 import Prelude hiding (filter,foldl,foldr,null,map)
 import qualified Data.List as List
 import Data.Monoid (Monoid(..))
-import Data.Foldable (Foldable(foldMap))
+import qualified Data.Foldable as Foldable
 import Data.Typeable
 
 {-
@@ -185,9 +185,13 @@ instance Ord a => Monoid (Set a) where
     mappend = union
     mconcat = unions
 
-instance Foldable Set where
+instance Foldable.Foldable Set where
+    fold Tip = mempty
+    fold (Bin _ k l r) = Foldable.fold l `mappend` k `mappend` Foldable.fold r
+    foldr = foldr
+    foldl = foldl
     foldMap _ Tip = mempty
-    foldMap f (Bin _s k l r) = foldMap f l `mappend` f k `mappend` foldMap f r
+    foldMap f (Bin _ k l r) = Foldable.foldMap f l `mappend` f k `mappend` 
Foldable.foldMap f r
 
 #if __GLASGOW_HASKELL__
 



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to