Warning: Reason support is experimental. We are looking for beta-tester and contributors.

Module Lwt_result

module Lwt_result : sig..end

Explicit error handling Since 2.6.0


This module provides helpers for values of type ('a, 'b) result Lwt.t. The module is experimental and may change in the future.

type ('a, 'b) t = ('a, 'b) Result.result Lwt.t
val return : 'a -> ('a, 'b) t
val fail : 'b -> ('a, 'b) t
val lift : ('a, 'b) Result.result -> ('a, 'b) t
val ok : 'a Lwt.t -> ('a, 'b) t
val catch : '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 Lwt_result.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_err : ('e1 -> 'e2) -> ('a, 'e1) t -> ('a, 'e2) t
val bind : 
  ('a, 'e) t ->
  ('a -> ('b, 'e) t) -> ('b, 'e) t
val bind_lwt : ('a, 'e) t -> ('a -> 'b Lwt.t) -> ('b, 'e) t
val bind_lwt_err : ('a, 'e1) t -> ('e1 -> 'e2 Lwt.t) -> ('a, 'e2) t
val bind_result : 
  ('a, 'e) t ->
  ('a -> ('b, 'e) Result.result) -> ('b, 'e) t
module Infix : sig..end
include Lwt_result.Infix