Fix Not_found bug (remove redeclaration of the exception)
This commit is contained in:
parent
0580f21896
commit
8e9ee21cd4
6
vendors/Red-Black_Trees/PolyMap.ml
vendored
6
vendors/Red-Black_Trees/PolyMap.ml
vendored
@ -23,19 +23,17 @@ let remove key map =
|
|||||||
let cmp k1 (k2,_) = map.cmp k1 k2 in
|
let cmp k1 (k2,_) = map.cmp k1 k2 in
|
||||||
{map with tree = RB.remove ~cmp key map.tree}
|
{map with tree = RB.remove ~cmp key map.tree}
|
||||||
|
|
||||||
exception Not_found
|
|
||||||
|
|
||||||
let find key map =
|
let find key map =
|
||||||
let cmp k1 (k2,_) = map.cmp k1 k2 in
|
let cmp k1 (k2,_) = map.cmp k1 k2 in
|
||||||
try snd (RB.find ~cmp key map.tree) with
|
try snd (RB.find ~cmp key map.tree) with
|
||||||
RB.Not_found -> raise Not_found
|
Not_found -> raise Not_found
|
||||||
|
|
||||||
let find_opt key map =
|
let find_opt key map =
|
||||||
try Some (find key map) with Not_found -> None
|
try Some (find key map) with Not_found -> None
|
||||||
|
|
||||||
let update key updater map =
|
let update key updater map =
|
||||||
match updater (find_opt key map) with
|
match updater (find_opt key map) with
|
||||||
| None -> failwith "TODO: RedBlackTrees: remove not implemented" (* TODO: remove key *)
|
| None -> remove key map
|
||||||
| Some v -> add key v map
|
| Some v -> add key v map
|
||||||
|
|
||||||
let bindings map =
|
let bindings map =
|
||||||
|
2
vendors/Red-Black_Trees/PolyMap.mli
vendored
2
vendors/Red-Black_Trees/PolyMap.mli
vendored
@ -42,8 +42,6 @@ val remove : 'key -> ('key, 'value) t -> ('key, 'value) t
|
|||||||
[key] in the map [map]. If [key] is not bound in [map], the
|
[key] in the map [map]. If [key] is not bound in [map], the
|
||||||
exception [Not_found] is raised. *)
|
exception [Not_found] is raised. *)
|
||||||
|
|
||||||
exception Not_found
|
|
||||||
|
|
||||||
val find : 'key -> ('key, 'value) t -> 'value
|
val find : 'key -> ('key, 'value) t -> 'value
|
||||||
|
|
||||||
(* The value of the call [find_opt key map] is [Some value] if the key
|
(* The value of the call [find_opt key map] is [Some value] if the key
|
||||||
|
4
vendors/Red-Black_Trees/PolySet.ml
vendored
4
vendors/Red-Black_Trees/PolySet.ml
vendored
@ -17,11 +17,9 @@ let is_empty set = RB.is_empty set.tree
|
|||||||
|
|
||||||
let add elt set = {set with tree = RB.add ~cmp:set.cmp RB.New elt set.tree}
|
let add elt set = {set with tree = RB.add ~cmp:set.cmp RB.New elt set.tree}
|
||||||
|
|
||||||
exception Not_found
|
|
||||||
|
|
||||||
let find elt set =
|
let find elt set =
|
||||||
try RB.find ~cmp:set.cmp elt set.tree with
|
try RB.find ~cmp:set.cmp elt set.tree with
|
||||||
RB.Not_found -> raise Not_found
|
Not_found -> raise Not_found
|
||||||
|
|
||||||
let find_opt elt set = RB.find_opt ~cmp:set.cmp elt set.tree
|
let find_opt elt set = RB.find_opt ~cmp:set.cmp elt set.tree
|
||||||
|
|
||||||
|
2
vendors/Red-Black_Trees/PolySet.mli
vendored
2
vendors/Red-Black_Trees/PolySet.mli
vendored
@ -38,8 +38,6 @@ val add : 'elt -> 'elt t -> 'elt t
|
|||||||
function of [set] (see [create]). If [elt] is not in [set], then
|
function of [set] (see [create]). If [elt] is not in [set], then
|
||||||
the exception [Not_found] is raised. *)
|
the exception [Not_found] is raised. *)
|
||||||
|
|
||||||
exception Not_found
|
|
||||||
|
|
||||||
val find : 'elt -> 'elt t -> 'elt
|
val find : 'elt -> 'elt t -> 'elt
|
||||||
|
|
||||||
(* The call [find_opt elt set] is similar to [find elt set], except
|
(* The call [find_opt elt set] is similar to [find elt set], except
|
||||||
|
7
vendors/Red-Black_Trees/RedBlack.ml
vendored
7
vendors/Red-Black_Trees/RedBlack.ml
vendored
@ -67,16 +67,15 @@ let remove : type a b . cmp:(a -> b -> int) -> a -> b t -> b t = fun ~cmp elt tr
|
|||||||
Int (colour, new_left, lroot, right)
|
Int (colour, new_left, lroot, right)
|
||||||
) in
|
) in
|
||||||
let rec bst_delete : a -> b t -> b t = fun elt -> function
|
let rec bst_delete : a -> b t -> b t = fun elt -> function
|
||||||
| Ext -> failwith "remove in red-black tree: element not found"
|
| Ext -> raise Not_found
|
||||||
| Int (colour, left, root, right) as current ->
|
| Int (colour, left, root, right) as current ->
|
||||||
let c = cmp elt root in
|
let c = cmp elt root in
|
||||||
if c = 0 then bst_shift_up current
|
if c = 0 then bst_shift_up current
|
||||||
else if c < 0 then Int (colour, bst_delete elt left, root, right)
|
else if c < 0 then Int (colour, bst_delete elt left, root, right)
|
||||||
else Int (colour, left, root, bst_delete elt right)
|
else Int (colour, left, root, bst_delete elt right)
|
||||||
in
|
in
|
||||||
bst_delete elt tree
|
try bst_delete elt tree
|
||||||
|
with Not_found -> tree
|
||||||
exception Not_found
|
|
||||||
|
|
||||||
let rec find ~cmp elt = function
|
let rec find ~cmp elt = function
|
||||||
Ext -> raise Not_found
|
Ext -> raise Not_found
|
||||||
|
2
vendors/Red-Black_Trees/RedBlack.mli
vendored
2
vendors/Red-Black_Trees/RedBlack.mli
vendored
@ -39,8 +39,6 @@ val remove: cmp:('a -> 'b -> int) -> 'a -> 'b t -> 'b t
|
|||||||
to a node of the tree [t], such that [cmp x y = true]. If none, the
|
to a node of the tree [t], such that [cmp x y = true]. If none, the
|
||||||
exception [Not_found] is raised. *)
|
exception [Not_found] is raised. *)
|
||||||
|
|
||||||
exception Not_found
|
|
||||||
|
|
||||||
val find: cmp:('a -> 'b -> int) -> 'a -> 'b t -> 'b
|
val find: cmp:('a -> 'b -> int) -> 'a -> 'b t -> 'b
|
||||||
|
|
||||||
(* The value of call [find_opt ~cmp x t] is [Some y] if there is an
|
(* The value of call [find_opt ~cmp x t] is [Some y] if there is an
|
||||||
|
Loading…
Reference in New Issue
Block a user