@@ -163,7 +163,7 @@ insertWithInternal f k0 v0 m0 = go h0 k0 v0 0 m0
163
163
| hy == h = if ky == k
164
164
then A. Sized 0 (leaf h k (f x y))
165
165
else A. Sized 1 (x `seq` (collision h l (L k x)))
166
- | otherwise = A. Sized 0 (x `seq` runST (two s h k x hy ky y))
166
+ | otherwise = A. Sized 1 (x `seq` runST (two s h k x hy ky y))
167
167
go h k x s (BitmapIndexed b ary)
168
168
| b .&. m == 0 =
169
169
let ary' = A. insert ary i $! leaf h k x
@@ -210,37 +210,39 @@ unsafeInsertWithInternal
210
210
unsafeInsertWithInternal f k0 v0 m0 = runST (go h0 k0 v0 0 m0)
211
211
where
212
212
h0 = hash k0
213
- go ! h ! k x ! _ Empty = return $! A. Sized 1 ( leaf h k x)
213
+ go ! h ! k x ! _ Empty = return . A. Sized 1 $! leaf h k x
214
214
go h k x s (Leaf hy l@ (L ky y))
215
215
| hy == h = if ky == k
216
- then return $! A. Sized 0 ( leaf h k (f x y) )
216
+ then return . A. Sized 0 $! leaf h k (f x y)
217
217
else do
218
218
let l' = x `seq` (L k x)
219
- return $! A. Sized 1 (collision h l l')
220
- | otherwise = (x `seq` two s h k x hy ky y) >>= return . A. Sized 1
219
+ return . A. Sized 1 $! collision h l l'
220
+ | otherwise = do
221
+ twoHM <- x `seq` two s h k x hy ky y
222
+ return . A. Sized 1 $! twoHM
221
223
go h k x s t@ (BitmapIndexed b ary)
222
224
| b .&. m == 0 = do
223
225
ary' <- A. insertM ary i $! leaf h k x
224
- return $! A. Sized 1 ( bitmapIndexedOrFull (b .|. m) ary')
226
+ return . A. Sized 1 $! bitmapIndexedOrFull (b .|. m) ary'
225
227
| otherwise = do
226
228
st <- A. indexM ary i
227
229
A. Sized sz st' <- go h k x (s+ bitsPerSubkey) st
228
- A. unsafeUpdateM ary i st'
229
- return ( A. Sized sz t)
230
+ A. unsafeUpdateM ary i $! st'
231
+ return . A. Sized sz $! t
230
232
where m = mask h s
231
233
i = sparseIndex b m
232
234
go h k x s t@ (Full ary) = do
233
235
st <- A. indexM ary i
234
236
A. Sized sz st' <- go h k x (s+ bitsPerSubkey) st
235
- A. unsafeUpdateM ary i st'
236
- return ( A. Sized sz t)
237
+ A. unsafeUpdateM ary i $! st'
238
+ return . A. Sized sz $! t
237
239
where i = index h s
238
240
go h k x s t@ (Collision hy v)
239
241
| h == hy =
240
242
let ! start = A. length v
241
243
! newV = updateOrSnocWith f k x v
242
244
! end = A. length newV
243
- in return $! A. Sized (end - start) ( Collision h newV)
245
+ in return . A. Sized (end - start) $! Collision h newV
244
246
| otherwise = go h k x s $ BitmapIndexed (mask hy s) (A. singleton t)
245
247
{-# INLINABLE unsafeInsertWithInternal #-}
246
248
0 commit comments