@@ -63,7 +63,7 @@ import Data.Traversable (traverse, class Traversable)
63
63
import Data.TraversableWithIndex (class TraversableWithIndex , traverseWithIndex )
64
64
import Data.Tuple (Tuple (Tuple), snd , uncurry )
65
65
import Data.Unfoldable (class Unfoldable , unfoldr )
66
- import Partial.Unsafe (unsafePartial )
66
+ import Partial.Unsafe (unsafeCrashWith )
67
67
import Prim.TypeError (class Warn , Text )
68
68
69
69
-- | `Map k v` represents maps from keys of type `k` to values of type `v`.
@@ -507,7 +507,7 @@ pop k = down Nil
507
507
comp = compare
508
508
509
509
down :: List (TreeContext k v ) -> Map k v -> Maybe (Tuple v (Map k v ))
510
- down = unsafePartial \ ctx m -> case m of
510
+ down ctx m = case m of
511
511
Leaf -> Nothing
512
512
Two left k1 v1 right ->
513
513
case right, comp k k1 of
@@ -533,7 +533,7 @@ pop k = down Nil
533
533
_ , _ , _ -> down (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) right
534
534
535
535
up :: List (TreeContext k v ) -> Map k v -> Map k v
536
- up = unsafePartial \ ctxs tree ->
536
+ up ctxs tree =
537
537
case ctxs of
538
538
Nil -> tree
539
539
Cons x ctx ->
@@ -555,22 +555,25 @@ pop k = down Nil
555
555
ThreeMiddle (Three a k1 v1 b k2 v2 c) k3 v3 k4 v4 e, d -> fromZipper ctx (Three (Two a k1 v1 b) k2 v2 (Two c k3 v3 d) k4 v4 e)
556
556
ThreeMiddle a k1 v1 k2 v2 (Three c k3 v3 d k4 v4 e), b -> fromZipper ctx (Three a k1 v1 (Two b k2 v2 c) k3 v3 (Two d k4 v4 e))
557
557
ThreeRight a k1 v1 (Three b k2 v2 c k3 v3 d) k4 v4, e -> fromZipper ctx (Three a k1 v1 (Two b k2 v2 c) k3 v3 (Two d k4 v4 e))
558
+ _, _ -> unsafeCrashWith " The impossible happened in partial function `up`."
558
559
559
560
maxNode :: Map k v -> { key :: k , value :: v }
560
- maxNode = unsafePartial \m -> case m of
561
+ maxNode m = case m of
561
562
Two _ k' v Leaf -> { key: k', value: v }
562
563
Two _ _ _ right -> maxNode right
563
564
Three _ _ _ _ k' v Leaf -> { key: k', value: v }
564
565
Three _ _ _ _ _ _ right -> maxNode right
566
+ _ -> unsafeCrashWith " The impossible happened in partial function `maxNode`."
565
567
566
568
567
569
removeMaxNode :: List (TreeContext k v ) -> Map k v -> Map k v
568
- removeMaxNode = unsafePartial \ ctx m ->
570
+ removeMaxNode ctx m =
569
571
case m of
570
572
Two Leaf _ _ Leaf -> up ctx Leaf
571
573
Two left k' v right -> removeMaxNode (Cons (TwoRight left k' v) ctx) right
572
574
Three Leaf k1 v1 Leaf _ _ Leaf -> up (Cons (TwoRight Leaf k1 v1) ctx) Leaf
573
575
Three left k1 v1 mid k2 v2 right -> removeMaxNode (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) right
576
+ _ -> unsafeCrashWith " The impossible happened in partial function `removeMaxNode`."
574
577
575
578
576
579
-- | Insert the value, delete a value, or update a value for a key in a map
0 commit comments