Module Or_error

module Or_error: sig .. end
Type for tracking errors in an Error.t. This is a specialization of the Result type, where the Error constructor carries an Error.t.

A common idiom is to wrap a function that is not implemented on all platforms, e.g.:

val do_something_linux_specific : (unit -> unit) Or_error.t


type 'a t = ('a, Error.t) Result.t 
include Monad.S
val try_with : ?backtrace:bool -> (unit -> 'a) -> 'a t
try_with f catches exceptions thrown by f and returns them in the Result.t as an Error.t. try_with_join is like try_with, except that f can throw exceptions or return an Error directly, without ending up with a nested error; it is equivalent to Result.join (try_with f).
val try_with_join : ?backtrace:bool -> (unit -> 'a t) -> 'a t
val ok_exn : 'a t -> 'a
ok_exn t throws an exception if t is an Error, and otherwise returns the contents of the Ok constructor.
val of_exn : ?backtrace:[ `Get | `This of string ] -> exn -> 'a t
of_exn exn is Error (Error.of_exn exn).
val of_exn_result : ('a, exn) Result.t -> 'a t
of_exn_result (Ok a) = Ok a, of_exn_result (Error exn) = of_exn exn
val error : string -> 'a -> ('a -> Sexplib.Sexp.t) -> 'b t
error message value sexp_of_value constructs an Error.t and returns it as a Result.Error.
val error_string : string -> 'a t
error_string message is Error (Error.of_string message)
val errorf : ('a, unit, string, 'b t) Pervasives.format4 -> 'a
errorf format arg1 arg2 ... is Error (sprintf format arg1 arg2 ...). Note that it calculates the string eagerly, so when performance matters you may want to use error instead.
val tag : 'a t -> string -> 'a t
tag t string is Result.map_error t ~f:(fun e -> Error.tag e string). tag_arg is similar.
val tag_arg : 'a t -> string -> 'b -> ('b -> Sexplib.Sexp.t) -> 'a t
val unimplemented : string -> 'a t
unimplemented name returns a standard error value for an unimplemented value.
val combine_errors : 'a t list -> 'a list t
combine_errors ts returns Ok if every element in ts is Ok, else it returns Error with all the errors in ts. More precisely:

| combine_errors Ok a1; ...; Ok an = Ok a1; ...; an | combine_errors ...; Error e1; ...; Error en; ... | = Error (Error.of_list e1; ...; en)

val combine_errors_unit : unit t list -> unit t
combine_errors_unit returns Ok if every element in ts is Ok (), else it returns Error with all the errors in ts, like combine_errors.
val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
val bin_t : 'a Bin_prot.Type_class.t -> 'a t Bin_prot.Type_class.t
val bin_read_t : 'a Bin_prot.Read.reader -> 'a t Bin_prot.Read.reader
val __bin_read_t__ : 'a Bin_prot.Read.reader -> (int -> 'a t) Bin_prot.Read.reader
val bin_reader_t : 'a Bin_prot.Type_class.reader -> 'a t Bin_prot.Type_class.reader
val bin_size_t : 'a Bin_prot.Size.sizer -> 'a t Bin_prot.Size.sizer
val bin_write_t : 'a Bin_prot.Write.writer -> 'a t Bin_prot.Write.writer
val bin_writer_t : 'a Bin_prot.Type_class.writer -> 'a t Bin_prot.Type_class.writer

try_with f catches exceptions thrown by f and returns them in the Result.t as an Error.t. try_with_join is like try_with, except that f can throw exceptions or return an Error directly, without ending up with a nested error; it is equivalent to Result.join (try_with f).

ok_exn t throws an exception if t is an Error, and otherwise returns the contents of the Ok constructor.

of_exn exn is Error (Error.of_exn exn).

of_exn_result (Ok a) = Ok a, of_exn_result (Error exn) = of_exn exn

error message value sexp_of_value constructs an Error.t and returns it as a Result.Error.

error_string message is Error (Error.of_string message)

errorf format arg1 arg2 ... is Error (sprintf format arg1 arg2 ...). Note that it calculates the string eagerly, so when performance matters you may want to use error instead.

tag t string is Result.map_error t ~f:(fun e -> Error.tag e string). tag_arg is similar.

unimplemented name returns a standard error value for an unimplemented value.

combine_errors ts returns Ok if every element in ts is Ok, else it returns Error with all the errors in ts. More precisely:

| combine_errors Ok a1; ...; Ok an = Ok a1; ...; an | combine_errors ...; Error e1; ...; Error en; ... | = Error (Error.of_list e1; ...; en)

combine_errors_unit returns Ok if every element in ts is Ok (), else it returns Error with all the errors in ts, like combine_errors.