Skip to content

Commit 57a5f2a

Browse files
Replace unsafePartial with unsafeCrashWith (#57)
1 parent 75b9bf4 commit 57a5f2a

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/Data/Map/Internal.purs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ import Data.Traversable (traverse, class Traversable)
6363
import Data.TraversableWithIndex (class TraversableWithIndex, traverseWithIndex)
6464
import Data.Tuple (Tuple(Tuple), snd, uncurry)
6565
import Data.Unfoldable (class Unfoldable, unfoldr)
66-
import Partial.Unsafe (unsafePartial)
66+
import Partial.Unsafe (unsafeCrashWith)
6767
import Prim.TypeError (class Warn, Text)
6868

6969
-- | `Map k v` represents maps from keys of type `k` to values of type `v`.
@@ -507,7 +507,7 @@ pop k = down Nil
507507
comp = compare
508508

509509
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
511511
Leaf -> Nothing
512512
Two left k1 v1 right ->
513513
case right, comp k k1 of
@@ -533,7 +533,7 @@ pop k = down Nil
533533
_ , _ , _ -> down (Cons (ThreeRight left k1 v1 mid k2 v2) ctx) right
534534

535535
up :: List (TreeContext k v) -> Map k v -> Map k v
536-
up = unsafePartial \ctxs tree ->
536+
up ctxs tree =
537537
case ctxs of
538538
Nil -> tree
539539
Cons x ctx ->
@@ -555,22 +555,25 @@ pop k = down Nil
555555
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)
556556
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))
557557
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`."
558559

559560
maxNode :: Map k v -> { key :: k, value :: v }
560-
maxNode = unsafePartial \m -> case m of
561+
maxNode m = case m of
561562
Two _ k' v Leaf -> { key: k', value: v }
562563
Two _ _ _ right -> maxNode right
563564
Three _ _ _ _ k' v Leaf -> { key: k', value: v }
564565
Three _ _ _ _ _ _ right -> maxNode right
566+
_ -> unsafeCrashWith "The impossible happened in partial function `maxNode`."
565567

566568

567569
removeMaxNode :: List (TreeContext k v) -> Map k v -> Map k v
568-
removeMaxNode = unsafePartial \ctx m ->
570+
removeMaxNode ctx m =
569571
case m of
570572
Two Leaf _ _ Leaf -> up ctx Leaf
571573
Two left k' v right -> removeMaxNode (Cons (TwoRight left k' v) ctx) right
572574
Three Leaf k1 v1 Leaf _ _ Leaf -> up (Cons (TwoRight Leaf k1 v1) ctx) Leaf
573575
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`."
574577

575578

576579
-- | Insert the value, delete a value, or update a value for a key in a map

0 commit comments

Comments
 (0)