We are currently on OCaml 4.02 as minimum version. To make the followup
optimizations compile backport these functions from OCaml 4.06.
This implementation is less efficient than the one in the 4.06 standard
library which has access to the internals of the Map.
Signed-off-by: Edwin Török <edvin.torok@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>
cmd :: args |> List.map quote |> String.concat " "
end
+module Map = struct
+ module Make(Ord: Map.OrderedType) = struct
+
+ include Map.Make(Ord)
+
+ let find_opt k t = try Some (find k t) with Not_found -> None
+
+ let update k f t =
+ let r = find_opt k t in
+ let r' = f r in
+ match r, r' with
+ | None, None -> t
+ | Some _, None -> remove k t
+ | Some r, Some r' when r == r' -> t
+ | _, Some r' -> add k r' t
+
+ end
+end
+
module String = struct include String
let of_char c = String.make 1 c
* GNU Lesser General Public License for more details.
*)
+open Stdext
+
module Node =
struct
type ('a,'b) t = {