@@ -313,21 +313,21 @@ delete k m = maybe m snd (pop k m)
313
313
-- | Delete a key and its corresponding value from a map, returning the value
314
314
-- | as well as the subsequent map.
315
315
pop :: forall k v . Ord k => k -> Map k v -> Maybe (Tuple v (Map k v ))
316
- pop = down Nil
316
+ pop k = down Nil
317
317
where
318
318
comp :: k -> k -> Ordering
319
319
comp = compare
320
320
321
- down :: List (TreeContext k v ) -> k -> Map k v -> Maybe (Tuple v (Map k v ))
322
- down = unsafePartial \ctx k m -> case m of
321
+ down :: List (TreeContext k v ) -> Map k v -> Maybe (Tuple v (Map k v ))
322
+ down = unsafePartial \ctx m -> case m of
323
323
Leaf -> Nothing
324
324
Two left k1 v1 right ->
325
325
case right, comp k k1 of
326
326
Leaf , EQ -> Just (Tuple v1 (up ctx Leaf ))
327
327
_ , EQ -> let max = maxNode left
328
328
in Just (Tuple v1 (removeMaxNode (Cons (TwoLeft max.key max.value right) ctx) left))
329
- _ , LT -> down (Cons (TwoLeft k1 v1 right) ctx) k left
330
- _ , _ -> down (Cons (TwoRight left k1 v1) ctx) k right
329
+ _ , LT -> down (Cons (TwoLeft k1 v1 right) ctx) left
330
+ _ , _ -> down (Cons (TwoRight left k1 v1) ctx) right
331
331
Three left k1 v1 mid k2 v2 right ->
332
332
let leaves =
333
333
case left, mid, right of
@@ -340,9 +340,9 @@ pop = down Nil
340
340
in Just (Tuple v1 (removeMaxNode (Cons (ThreeLeft max.key max.value mid k2 v2 right) ctx) left))
341
341
_ , _ , EQ -> let max = maxNode mid
342
342
in Just (Tuple v2 (removeMaxNode (Cons (ThreeMiddle left k1 v1 max.key max.value right) ctx) mid))
343
- _ , LT , _ -> down (Cons (ThreeLeft k1 v1 mid k2 v2 right) ctx) k left
344
- _ , GT , LT -> down (Cons (ThreeMiddle left k1 v1 k2 v2 right) ctx) k mid
345
- _ , _ , _ -> down (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) k right
343
+ _ , LT , _ -> down (Cons (ThreeLeft k1 v1 mid k2 v2 right) ctx) left
344
+ _ , GT , LT -> down (Cons (ThreeMiddle left k1 v1 k2 v2 right) ctx) mid
345
+ _ , _ , _ -> down (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) right
346
346
347
347
up :: List (TreeContext k v ) -> Map k v -> Map k v
348
348
up = unsafePartial \ctxs tree ->
@@ -370,17 +370,17 @@ pop = down Nil
370
370
371
371
maxNode :: Map k v -> { key :: k , value :: v }
372
372
maxNode = unsafePartial \m -> case m of
373
- Two _ k v Leaf -> { key: k, value: v }
373
+ Two _ k' v Leaf -> { key: k' , value: v }
374
374
Two _ _ _ right -> maxNode right
375
- Three _ _ _ _ k v Leaf -> { key: k, value: v }
375
+ Three _ _ _ _ k' v Leaf -> { key: k' , value: v }
376
376
Three _ _ _ _ _ _ right -> maxNode right
377
377
378
378
379
379
removeMaxNode :: List (TreeContext k v ) -> Map k v -> Map k v
380
380
removeMaxNode = unsafePartial \ctx m ->
381
381
case m of
382
382
Two Leaf _ _ Leaf -> up ctx Leaf
383
- Two left k v right -> removeMaxNode (Cons (TwoRight left k v) ctx) right
383
+ Two left k' v right -> removeMaxNode (Cons (TwoRight left k' v) ctx) right
384
384
Three Leaf k1 v1 Leaf _ _ Leaf -> up (Cons (TwoRight Leaf k1 v1) ctx) Leaf
385
385
Three left k1 v1 mid k2 v2 right -> removeMaxNode (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) right
386
386
0 commit comments