From 16ac701de17fff3501cd6706946aac279267ab27 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 23 Feb 2016 14:21:37 +0100 Subject: [PATCH] add `CCResult.{map_or,get_or}` --- src/core/CCResult.ml | 8 ++++++++ src/core/CCResult.mli | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/src/core/CCResult.ml b/src/core/CCResult.ml index 451a338a..57e48752 100644 --- a/src/core/CCResult.ml +++ b/src/core/CCResult.ml @@ -64,6 +64,14 @@ let get_exn = function | Ok x -> x | Error _ -> raise Get_error +let get_or e ~default = match e with + | Ok x -> x + | Error _ -> default + +let map_or f e ~default = match e with + | Ok x -> f x + | Error _ -> default + let catch e ~ok ~err = match e with | Ok x -> ok x | Error y -> err y diff --git a/src/core/CCResult.mli b/src/core/CCResult.mli index 691dec3d..411c2246 100644 --- a/src/core/CCResult.mli +++ b/src/core/CCResult.mli @@ -64,6 +64,12 @@ val get_exn : ('a, _) t -> 'a whenever possible. @raise Get_error if the value is an error. *) +val get_or : ('a, _) t -> default:'a -> 'a +(** [get_or e ~default] returns [x] if [e = Ok x], [default] otherwise *) + +val map_or : ('a -> 'b) -> ('a, 'b) t -> default:'b -> 'b +(** [map_or f e ~default] returns [f x] if [e = Ok x], [default] otherwise *) + val catch : ('a, 'err) t -> ok:('a -> 'b) -> err:('err -> 'b) -> 'b (** [catch e ~ok ~err] calls either [ok] or [err] depending on the value of [e]. *)