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
