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 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.Unsafe_read_c.reader -> 'a t Bin_prot.Read_ml.reader
val bin_read_t_ : 'a Bin_prot.Unsafe_read_c.reader ->
'a t Bin_prot.Unsafe_read_c.reader
val bin_read_t__ : 'a Bin_prot.Unsafe_read_c.reader ->
(int -> 'a t) Bin_prot.Unsafe_read_c.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.Unsafe_write_c.writer -> 'a t Bin_prot.Write_ml.writer
val bin_write_t_ : 'a Bin_prot.Unsafe_write_c.writer ->
'a t Bin_prot.Unsafe_write_c.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)

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.