Make.Result
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 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.