From 661db9db765a4c106c5aec3f6f3fb763d7d1a193 Mon Sep 17 00:00:00 2001 From: Josh Berdine Date: Thu, 28 Nov 2019 12:41:41 -0800 Subject: [PATCH] [sledge] Implement Map.find_and_remove more directly Summary: No need for exceptions. Reviewed By: jvillard Differential Revision: D18736382 fbshipit-source-id: 684bf896c --- sledge/src/import/import.ml | 8 +++----- sledge/src/import/import.mli | 1 - 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/sledge/src/import/import.ml b/sledge/src/import/import.ml index 6ace550db..e38ba272f 100644 --- a/sledge/src/import/import.ml +++ b/sledge/src/import/import.ml @@ -240,17 +240,15 @@ module Map = struct let equal_m__t (module Elt : Compare_m) equal_v = equal equal_v - let find_and_remove_exn m k = + let find_and_remove m k = let found = ref None in let m = change m k ~f:(fun v -> found := v ; None ) in - match !found with None -> raise Caml.Not_found | Some v -> (v, m) - - let find_and_remove m k = - try Some (find_and_remove_exn m k) with Caml.Not_found -> None + let+ v = !found in + (v, m) let find_or_add (type data) map key ~(default : data) ~if_found ~if_added = diff --git a/sledge/src/import/import.mli b/sledge/src/import/import.mli index 8de11cbda..b8e633bda 100644 --- a/sledge/src/import/import.mli +++ b/sledge/src/import/import.mli @@ -184,7 +184,6 @@ module Map : sig -> ('k, 'v, 'c) t -> bool - val find_and_remove_exn : ('k, 'v, 'c) t -> 'k -> 'v * ('k, 'v, 'c) t val find_and_remove : ('k, 'v, 'c) t -> 'k -> ('v * ('k, 'v, 'c) t) option val find_or_add :