Module Make.Result

type ('a, 'e) t = ('a, 'e) Pervasives.result =
  1. | Ok of 'a
  2. | Error of 'e
val ok : 'a -> ('a, 'e) Pervasives.result
val ok_s : 'a -> ('a, 'e) Pervasives.result Lwt.t
val error : 'e -> ('a, 'e) Pervasives.result
val error_s : 'e -> ('a, 'e) Pervasives.result Lwt.t
val return : 'a -> ('a, 'e) Pervasives.result
val return_unit : (unit, 'e) Pervasives.result
val return_none : ('a option, 'e) Pervasives.result
val return_some : 'a -> ('a option, 'e) Pervasives.result
val return_nil : ('a list, 'e) Pervasives.result
val return_true : (bool, 'e) Pervasives.result
val return_false : (bool, 'e) Pervasives.result
val value : ('a, 'e) Pervasives.result -> default:'a -> 'a
val value_f : ('a, 'e) Pervasives.result -> default:(unit -> 'a) -> 'a
val bind : ('a, 'e) Pervasives.result -> ('a -> ('b, 'e) Pervasives.result) -> ('b, 'e) Pervasives.result
val bind_s : ('a, 'e) Pervasives.result -> ('a -> ('b, 'e) Pervasives.result Lwt.t) -> ('b, 'e) Pervasives.result Lwt.t
val bind_error : ('a, 'e) Pervasives.result -> ('e -> ('a, 'f) Pervasives.result) -> ('a, 'f) Pervasives.result
val bind_error_s : ('a, 'e) Pervasives.result -> ('e -> ('a, 'f) Pervasives.result Lwt.t) -> ('a, 'f) Pervasives.result Lwt.t
val join : (('a, 'e) Pervasives.result, 'e) Pervasives.result -> ('a, 'e) Pervasives.result
val map : ('a -> 'b) -> ('a, 'e) Pervasives.result -> ('b, 'e) Pervasives.result
val map_e : ('a -> ('b, 'e) Pervasives.result) -> ('a, 'e) Pervasives.result -> ('b, 'e) Pervasives.result
val map_s : ('a -> 'b Lwt.t) -> ('a, 'e) Pervasives.result -> ('b, 'e) Pervasives.result Lwt.t
val map_es : ('a -> ('b, 'e) Pervasives.result Lwt.t) -> ('a, 'e) Pervasives.result -> ('b, 'e) Pervasives.result Lwt.t
val map_error : ('e -> 'f) -> ('a, 'e) Pervasives.result -> ('a, 'f) Pervasives.result
val map_error_e : ('e -> ('a, 'f) Pervasives.result) -> ('a, 'e) Pervasives.result -> ('a, 'f) Pervasives.result
val map_error_s : ('e -> 'f Lwt.t) -> ('a, 'e) Pervasives.result -> ('a, 'f) Pervasives.result Lwt.t
val map_error_es : ('e -> ('a, 'f) Pervasives.result Lwt.t) -> ('a, 'e) Pervasives.result -> ('a, 'f) Pervasives.result Lwt.t
val fold : ok:('a -> 'c) -> error:('e -> 'c) -> ('a, 'e) Pervasives.result -> 'c
val iter : ('a -> unit) -> ('a, 'e) Pervasives.result -> unit
val iter_s : ('a -> unit Lwt.t) -> ('a, 'e) Pervasives.result -> unit Lwt.t
val iter_error : ('e -> unit) -> ('a, 'e) Pervasives.result -> unit
val iter_error_s : ('e -> unit Lwt.t) -> ('a, 'e) Pervasives.result -> unit Lwt.t
val is_ok : ('a, 'e) Pervasives.result -> bool
val is_error : ('a, 'e) Pervasives.result -> bool
val equal : ok:('a -> 'a -> bool) -> error:('e -> 'e -> bool) -> ('a, 'e) Pervasives.result -> ('a, 'e) Pervasives.result -> bool
val compare : ok:('a -> 'a -> int) -> error:('e -> 'e -> int) -> ('a, 'e) Pervasives.result -> ('a, 'e) Pervasives.result -> int
val to_option : ('a, 'e) Pervasives.result -> 'a option
val of_option : error:'e -> 'a option -> ('a, 'e) Pervasives.result
val to_list : ('a, 'e) Pervasives.result -> 'a list
val to_seq : ('a, 'e) Pervasives.result -> 'a Seq.t
val catch : ?catch_only:(exn -> bool) -> (unit -> 'a) -> ('a, exn) Pervasives.result

catch f is try Ok (f ()) with e -> Error e: it is Ok x if f () evaluates to x, and it is Error e if f () raises e.

See WithExceptions.S.Result.to_exn for a converse function.

If catch_only is set, then only exceptions e such that catch_only e is true are caught.

Whether catch_only is set or not, you cannot catch non-deterministic runtime exceptions of OCaml such as Stack_overflow and Out_of_memory nor system exceptions such as Unix.Unix_error.

val catch_f : ?catch_only:(exn -> bool) -> (unit -> 'a) -> (exn -> 'error) -> ('a, 'error) Pervasives.result

catch_f f handler is equivalent to map_error (catch f) handler. In other words, it catches exceptions in f () and either returns the value in an Ok or passes the exception to handler for the Error.

catch_only has the same use as with catch. The same restriction on catching non-deterministic runtime exceptions applies.

val catch_s : ?catch_only:(exn -> bool) -> (unit -> 'a Lwt.t) -> ('a, exn) Pervasives.result Lwt.t

catch_s is catch but for Lwt promises. Specifically, catch_s f returns a promise that resolves to Ok x if and when f () resolves to x, or to Error exc if and when f () is rejected with exc.

If catch_only is set, then only exceptions e such that catch_only e is true are caught.

Whether catch_only is set or not, you cannot catch non-deterministic runtime exceptions of OCaml such as Stack_overflow and Out_of_memory nor system exceptions such as Unix.Unix_error.