This module provides helpers for values of type ('a, 'b) result Lwt.t
. The module is experimental and may change in the future.
val return : 'a -> ('a, _) t
val fail : 'b -> (_, 'b) t
val lift : ('a, 'b) result -> ('a, 'b) t
val ok : 'a Lwt.t -> ('a, _) t
val error : 'b Lwt.t -> (_, 'b) t
val catch : (unit -> 'a Lwt.t) -> ('a, exn) t
catch x
behaves like return y
if x ()
evaluates to y
, and like fail e
if x ()
raises e
val get_exn : ('a, exn) t -> 'a Lwt.t
get_exn
is the opposite of catch
: it unwraps the result type, returning the value in case of success, calls Lwt.fail
in case of error.
val map : ('a -> 'b) -> ('a, 'e) t -> ('b, 'e) t
val map_error : ('e1 -> 'e2) -> ('a, 'e1) t -> ('a, 'e2) t
val bind : ('a, 'e) t -> ('a -> ('b, 'e) t) -> ('b, 'e) t
val bind_error : ('a, 'e1) t -> ('e1 -> ('a, 'e2) t) -> ('a, 'e2) t
val bind_lwt : ('a, 'e) t -> ('a -> 'b Lwt.t) -> ('b, 'e) t
val bind_lwt_error : ('a, 'e1) t -> ('e1 -> 'e2 Lwt.t) -> ('a, 'e2) t
val bind_result : ('a, 'e) t -> ('a -> ('b, 'e) result) -> ('b, 'e) t
val both : ('a, 'e) t -> ('b, 'e) t -> ('a * 'b, 'e) t
Lwt.both p_1 p_2
returns a promise that is pending until both promises p_1
and p_2
become resolved. If only p_1
is Error e
, the promise is resolved with Error e
, If only p_2
is Error e
, the promise is resolved with Error e
, If both p_1
and p_2
resolve with Error _
, the promise is resolved with the error that occurred first.
val iter : ('a -> unit Lwt.t) -> ('a, 'e) t -> unit Lwt.t
iter f r
is f v
if r
is a promise resolved with Ok v
, and Lwt.return_unit
otherwise.
val iter_error : ('e -> unit Lwt.t) -> ('a, 'e) t -> unit Lwt.t
iter_error f r
is f v
if r
is a promise resolved with Error v
, and Lwt.return_unit
otherwise.
module Infix : sig ... end
include module type of Infix
val (>|=) : ('a, 'e) t -> ('a -> 'b) -> ('b, 'e) t
val (>>=) : ('a, 'e) t -> ('a -> ('b, 'e) t) -> ('b, 'e) t
Deprecated
val map_err : ('e1 -> 'e2) -> ('a, 'e1) t -> ('a, 'e2) t
val bind_lwt_err : ('a, 'e1) t -> ('e1 -> 'e2 Lwt.t) -> ('a, 'e2) t