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
