From cfad88e906a6aad188683a21f658d5fe6822e39a Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 14 Jun 2016 13:58:37 +0200 Subject: [PATCH] add `CCOpt.get_or` with label, deprecates `get` --- src/core/CCOpt.ml | 4 ++++ src/core/CCOpt.mli | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/core/CCOpt.ml b/src/core/CCOpt.ml index b15d93d2..3413e18d 100644 --- a/src/core/CCOpt.ml +++ b/src/core/CCOpt.ml @@ -93,6 +93,10 @@ let get default x = match x with | None -> default | Some y -> y +let get_or ~default x = match x with + | None -> default + | Some y -> y + let get_exn = function | Some x -> x | None -> invalid_arg "CCOpt.get_exn" diff --git a/src/core/CCOpt.mli b/src/core/CCOpt.mli index feca2f3b..0214fa41 100644 --- a/src/core/CCOpt.mli +++ b/src/core/CCOpt.mli @@ -27,7 +27,7 @@ val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool val return : 'a -> 'a t -(** Monadic return *) +(** Monadic return, that is [return x = Some x] *) val (>|=) : 'a t -> ('a -> 'b) -> 'b t (** Infix version of {!map} *) @@ -62,7 +62,13 @@ val for_all : ('a -> bool) -> 'a t -> bool val get : 'a -> 'a t -> 'a (** [get default x] unwraps [x], but if [x = None] it returns [default] instead. - @since 0.4.1 *) + @since 0.4.1 + @deprecated use {!get_or} @since NEXT_RELEASE *) + +val get_or : default:'a -> 'a t -> 'a +(** [get_or ~default o] extracts the value from [o], or + returns [default] if [o = None]. + @since NEXT_RELEASE *) val get_exn : 'a t -> 'a (** Open the option, possibly failing if it is [None] @@ -103,6 +109,7 @@ val (<+>) : 'a t -> 'a t -> 'a t val choice : 'a t list -> 'a t (** [choice] returns the first non-[None] element of the list, or [None] *) + (** {2 Infix Operators} @since 0.16 *)