[commit: containers] : Use foldr'Bits in partition (but this could still be faster) (3a1c3dd)
Ian Lynagh
igloo at earth.li
Thu Feb 23 01:13:28 CET 2012
Repository : ssh://darcs.haskell.org//srv/darcs/packages/containers
On branch :
http://hackage.haskell.org/trac/ghc/changeset/3a1c3dddd41c5cdd9879f09682bcdb766f905143
>---------------------------------------------------------------
commit 3a1c3dddd41c5cdd9879f09682bcdb766f905143
Author: Joachim Breitner <mail at joachim-breitner.de>
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 #-}
More information about the Cvs-libraries
mailing list