From ac3ec112e84e3a38b866e9c5966b847873f8ea30 Mon Sep 17 00:00:00 2001 From: Josh Berdine Date: Mon, 10 May 2021 13:28:01 -0700 Subject: [PATCH] [sledge] Update containers to 3.4 Reviewed By: ngorogiannis Differential Revision: D28269453 fbshipit-source-id: 9224591ab --- opam/sledge.opam | 2 +- sledge/nonstdlib/iter.ml | 2 +- sledge/nonstdlib/option.ml | 1 + sledge/nonstdlib/option.mli | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/opam/sledge.opam b/opam/sledge.opam index 65cf748bc..97a497456 100644 --- a/opam/sledge.opam +++ b/opam/sledge.opam @@ -12,7 +12,7 @@ depends: [ "ocaml" {>= "4.12.0"} "apron" {>= "v0.9.13"} "base" - "containers" + "containers" {>= "3.4"} "containers-data" "conf-llvm" {= "11.0.0"} "core" {>= "v0.14"} diff --git a/sledge/nonstdlib/iter.ml b/sledge/nonstdlib/iter.ml index 24476d228..1dbd3e157 100644 --- a/sledge/nonstdlib/iter.ml +++ b/sledge/nonstdlib/iter.ml @@ -39,7 +39,7 @@ let pop seq = let find_map seq ~f = find_map ~f seq let find seq ~f = find (CCOpt.if_ f) seq -let find_exn seq ~f = CCOpt.get_exn (find ~f seq) +let find_exn seq ~f = CCOpt.get_exn_or "Iter.find_exn" (find ~f seq) let fold seq init ~f = fold ~f:(fun s x -> f x s) ~init seq let contains_dup (type elt) seq ~cmp = diff --git a/sledge/nonstdlib/option.ml b/sledge/nonstdlib/option.ml index 60c96364b..3bc4af5bf 100644 --- a/sledge/nonstdlib/option.ml +++ b/sledge/nonstdlib/option.ml @@ -15,6 +15,7 @@ let pp fmt pp_elt fs = function | Some x -> Format.fprintf fs fmt pp_elt x | None -> () +let get_exn = function Some x -> x | None -> invalid_arg "Option.get_exn" let map_or xo ~default ~f = map_or ~default f xo let flat_map xo ~f = flat_map f xo let iter xo ~f = iter f xo diff --git a/sledge/nonstdlib/option.mli b/sledge/nonstdlib/option.mli index e4d08d032..0a734a7b8 100644 --- a/sledge/nonstdlib/option.mli +++ b/sledge/nonstdlib/option.mli @@ -15,6 +15,7 @@ type 'a t = 'a option [@@deriving compare, equal, hash, sexp] include Monad_intf.S with type 'a t := 'a t +val get_exn : 'a t -> 'a val pp : ('a_pp -> 'a -> unit, unit) fmt -> 'a_pp -> 'a option pp val map_or : 'a t -> default:'b -> f:('a -> 'b) -> 'b val flat_map : 'a t -> f:('a -> 'b t) -> 'b t