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

On branch  : 

http://hackage.haskell.org/trac/ghc/changeset/3a1c3dddd41c5cdd9879f09682bcdb766f905143

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

commit 3a1c3dddd41c5cdd9879f09682bcdb766f905143
Author: Joachim Breitner <[email protected]>
Date:   Sat Sep 17 22:38:23 2011 +0200

    Use foldr'Bits in partition (but this could still be faster)

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

 Data/DenseIntSet.hs |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/Data/DenseIntSet.hs b/Data/DenseIntSet.hs
index 570ad97..25f5de9 100644
--- a/Data/DenseIntSet.hs
+++ b/Data/DenseIntSet.hs
@@ -522,12 +522,11 @@ partition predicate t
                (r1,r2) = partition predicate r
            in (bin p m l1 r1, bin p m l2 r2)
       Tip kx bm 
-        -> let (bm1,bm2) = foldlStrict (bitPart kx) (bm,0) lowBitsList
+        -> let (bm1,bm2) = foldr'Bits 0 (bitPart kx) (0,0) bm
            in (tip kx bm1, tip kx bm2)
       Nil -> (Nil,Nil)
-  where bitPart kx (m1,m2) i | not (m1 `testBit` i) = (m1, m2)
-                             | predicate (kx + i)   = (m1, m2)
-                             | otherwise            = (m1 `clearBit` i, m2 
`setBit` i)
+  where bitPart kx i (m1,m2) | predicate (kx + i)   = (m1 `setBit` i, m2)
+                             | otherwise            = (m1, m2 `setBit` i)
         {-# INLINE bitPart #-}
 
 



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

Reply via email to