diff --git a/src/core/CCOpt.ml b/src/core/CCOpt.ml index 745bb3bf..3610d897 100644 --- a/src/core/CCOpt.ml +++ b/src/core/CCOpt.ml @@ -106,6 +106,9 @@ let fold f acc o = match o with let get_or ~default x = match x with | None -> default | Some y -> y +let value x ~default = match x with + | None -> default + | Some y -> y let get_exn = function | Some x -> x diff --git a/src/core/CCOpt.mli b/src/core/CCOpt.mli index e6041177..a634aa9c 100644 --- a/src/core/CCOpt.mli +++ b/src/core/CCOpt.mli @@ -72,6 +72,10 @@ val get_or : default:'a -> 'a t -> 'a returns [default] if [o = None]. @since 0.18 *) +val value : 'a t -> default:'a -> 'a +(** Similar to the stdlib's [Option.value] and to {!get_or}. + @since NEXT_RELEASE *) + val get_exn : 'a t -> 'a (** Open the option, possibly failing if it is [None]. @raise Invalid_argument if the option is [None]. *)