@@ -529,15 +529,15 @@ insertInternal k0 v0 m0 = go h0 k0 v0 0 m0
529
529
in (1 , bitmapIndexedOrFull (b .|. m) ary')
530
530
| otherwise =
531
531
let ! st = A. index ary i
532
- (! sz, ! st') = go h k x (s+ bitsPerSubkey) st
532
+ ! (! sz, ! st') = go h k x (s+ bitsPerSubkey) st
533
533
in if st' `ptrEq` st
534
534
then (sz, t)
535
535
else (sz, BitmapIndexed b (A. update ary i st'))
536
536
where m = mask h s
537
537
i = sparseIndex b m
538
538
go h k x s t@ (Full ary) =
539
539
let ! st = A. index ary i
540
- (! sz, ! st') = go h k x (s+ bitsPerSubkey) st
540
+ ! (! sz, ! st') = go h k x (s+ bitsPerSubkey) st
541
541
in if st' `ptrEq` st
542
542
then (sz, t)
543
543
else (sz, Full (update16 ary i st'))
@@ -755,8 +755,8 @@ deleteInternal k0 m0 = go h0 k0 0 m0
755
755
| b .&. m == 0 = (0 , t)
756
756
| otherwise =
757
757
let ! st = A. index ary i
758
- (! sz, ! st') = go h k (s+ bitsPerSubkey) st
759
- in (sz,) ( if st' `ptrEq` st
758
+ ! (! sz, ! st') = go h k (s+ bitsPerSubkey) st
759
+ in (sz,) $! if st' `ptrEq` st
760
760
then t
761
761
else case st' of
762
762
Empty | A. length ary == 1 -> Empty
@@ -769,28 +769,28 @@ deleteInternal k0 m0 = go h0 k0 0 m0
769
769
where
770
770
bIndexed = BitmapIndexed (b .&. complement m) (A. delete ary i)
771
771
l | isLeafOrCollision l && A. length ary == 1 -> l
772
- _ -> BitmapIndexed b (A. update ary i st'))
772
+ _ -> BitmapIndexed b (A. update ary i st')
773
773
where m = mask h s
774
774
i = sparseIndex b m
775
775
go h k s t@ (Full ary) =
776
776
let ! st = A. index ary i
777
- (! sz, ! st') = go h k (s+ bitsPerSubkey) st
778
- in (sz,) ( if st' `ptrEq` st
777
+ ! (! sz, ! st') = go h k (s+ bitsPerSubkey) st
778
+ in (sz,) $! if st' `ptrEq` st
779
779
then t
780
780
else case st' of
781
781
Empty ->
782
782
let ary' = A. delete ary i
783
783
bm = fullNodeMask .&. complement (1 `unsafeShiftL` i)
784
784
in BitmapIndexed bm ary'
785
- _ -> Full (A. update ary i st'))
785
+ _ -> Full (A. update ary i st')
786
786
where i = index h s
787
787
go h k _ t@ (Collision hy v)
788
788
| h == hy = case indexOf k v of
789
789
Just i
790
790
| A. length v == 2 ->
791
- (- 1 ,) ( if i == 0
791
+ (- 1 ,) $! if i == 0
792
792
then Leaf h (A. index v 1 )
793
- else Leaf h (A. index v 0 ))
793
+ else Leaf h (A. index v 0 )
794
794
| otherwise -> (- 1 , Collision h (A. delete v i))
795
795
Nothing -> (0 , t)
796
796
| otherwise = (0 , t)
@@ -1010,7 +1010,7 @@ unionWithKeyInternal f hm1 (HashMap siz hm2) = go 0 siz hm1 hm2
1010
1010
leafHashCode _ = error " leafHashCode"
1011
1011
1012
1012
goDifferentHash sz s h1 h2 t1 t2
1013
- | m1 == m2 = let (! dsz, ! hm) = go sz (s+ bitsPerSubkey) t1 t2
1013
+ | m1 == m2 = let ! (! dsz, ! hm) = go sz (s+ bitsPerSubkey) t1 t2
1014
1014
in (dsz, BitmapIndexed m1 (A. singleton hm))
1015
1015
| m1 < m2 = (sz, BitmapIndexed (m1 .|. m2) (A. pair t1 t2))
1016
1016
| otherwise = (sz, BitmapIndexed (m1 .|. m2) (A. pair t2 t1))
@@ -1066,7 +1066,7 @@ unionArrayByInternal siz f b1 b2 ary1 ary2 = A.runInternal $ do
1066
1066
| m > b' = return sz
1067
1067
| b' .&. m == 0 = go sz i i1 i2 (m `unsafeShiftL` 1 )
1068
1068
| ba .&. m /= 0 = do
1069
- let (! dsz, ! hm) = f sz (A. index ary1 i1) (A. index ary2 i2)
1069
+ let ! (! dsz, ! hm) = f sz (A. index ary1 i1) (A. index ary2 i2)
1070
1070
A. write mary i hm
1071
1071
go dsz (i+ 1 ) (i1+ 1 ) (i2+ 1 ) (m `unsafeShiftL` 1 )
1072
1072
| b1 .&. m /= 0 = do
0 commit comments