Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit 808055b

Browse files
authored
Merge pull request #105 from matthewleon/simplify-pop
simplify pop code
2 parents 3a2e9ec + b60c246 commit 808055b

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/Data/Map.purs

+11-11
Original file line numberDiff line numberDiff line change
@@ -313,21 +313,21 @@ delete k m = maybe m snd (pop k m)
313313
-- | Delete a key and its corresponding value from a map, returning the value
314314
-- | as well as the subsequent map.
315315
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
317317
where
318318
comp :: k -> k -> Ordering
319319
comp = compare
320320

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
323323
Leaf -> Nothing
324324
Two left k1 v1 right ->
325325
case right, comp k k1 of
326326
Leaf, EQ -> Just (Tuple v1 (up ctx Leaf))
327327
_ , EQ -> let max = maxNode left
328328
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
331331
Three left k1 v1 mid k2 v2 right ->
332332
let leaves =
333333
case left, mid, right of
@@ -340,9 +340,9 @@ pop = down Nil
340340
in Just (Tuple v1 (removeMaxNode (Cons (ThreeLeft max.key max.value mid k2 v2 right) ctx) left))
341341
_ , _ , EQ -> let max = maxNode mid
342342
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
346346

347347
up :: List (TreeContext k v) -> Map k v -> Map k v
348348
up = unsafePartial \ctxs tree ->
@@ -370,17 +370,17 @@ pop = down Nil
370370

371371
maxNode :: Map k v -> { key :: k, value :: v }
372372
maxNode = unsafePartial \m -> case m of
373-
Two _ k v Leaf -> { key: k, value: v }
373+
Two _ k' v Leaf -> { key: k', value: v }
374374
Two _ _ _ right -> maxNode right
375-
Three _ _ _ _ k v Leaf -> { key: k, value: v }
375+
Three _ _ _ _ k' v Leaf -> { key: k', value: v }
376376
Three _ _ _ _ _ _ right -> maxNode right
377377

378378

379379
removeMaxNode :: List (TreeContext k v) -> Map k v -> Map k v
380380
removeMaxNode = unsafePartial \ctx m ->
381381
case m of
382382
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
384384
Three Leaf k1 v1 Leaf _ _ Leaf -> up (Cons (TwoRight Leaf k1 v1) ctx) Leaf
385385
Three left k1 v1 mid k2 v2 right -> removeMaxNode (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) right
386386

0 commit comments

Comments
 (0)