type ('ok, 'err) t = ('ok, 'err) Stdlib.result =| Ok of 'ok| Error of 'err'okis the return type, and'erris often an error message string.type nat = Zero | Succ of nat let pred = function | Succ n -> Ok n | Zero -> Error "Zero does not have a predecessor"The return type of
predcould benat option, but(nat, string) Result.tgives more control over the error message.
include Sexpable.S2 with type ('ok, 'err) t := ('ok, 'err) t
val t_of_sexp : (Sexplib0.Sexp.t -> 'a) -> (Sexplib0.Sexp.t -> 'b) -> Sexplib0.Sexp.t -> ('ok, 'err) tval sexp_of_t : ('a -> Sexplib0.Sexp.t) -> ('b -> Sexplib0.Sexp.t) -> ('ok, 'err) t -> Sexplib0.Sexp.t
val compare : ('ok -> 'ok -> int) -> ('err -> 'err -> int) -> ('ok, 'err) t -> ('ok, 'err) t -> intval equal : ('ok -> 'ok -> bool) -> ('err -> 'err -> bool) -> ('ok, 'err) t -> ('ok, 'err) t -> boolval hash_fold_t : (Hash.state -> 'ok -> Hash.state) -> (Hash.state -> 'err -> Hash.state) -> Hash.state -> ('ok, 'err) t -> Hash.state
include Monad.S2 with type ('a, 'err) t := ('a, 'err) t
module Let_syntax : sig ... endmodule Monad_infix : sig ... endval bind : ('a, 'err) t -> f:('a -> ('a, 'err) t) -> ('a, 'err) tval return : 'a -> ('a, 'err) tval map : ('a, 'err) t -> f:('a -> 'b) -> ('a, 'err) tval join : ('a, 'err) t -> ('a, 'err) tval ignore_m : ('a, 'err) t -> ('a, 'err) tval all : ('a, 'err) t list -> ('a, 'err) tval all_unit : ('a, 'err) t list -> ('a, 'err) t
val invariant : ('a -> unit) -> ('b -> unit) -> ('ok, 'err) t -> unit
val fail : 'err -> (_, 'err) tval failf : ('a, unit, string, (_, string) t) Stdlib.format4 -> 'ae.g.,
failf "Couldn't find bloogle %s" (Bloogle.to_string b).
val is_ok : (_, _) t -> boolval is_error : (_, _) t -> boolval ok : ('ok, _) t -> 'ok optionval ok_exn : ('ok, exn) t -> 'okval ok_or_failwith : ('ok, string) t -> 'okval error : (_, 'err) t -> 'err optionval of_option : 'ok option -> error:'err -> ('ok, 'err) tval iter : ('ok, _) t -> f:('ok -> unit) -> unitval iter_error : (_, 'err) t -> f:('err -> unit) -> unitval map : ('ok, 'err) t -> f:('ok -> 'c) -> ('c, 'err) tval map_error : ('ok, 'err) t -> f:('err -> 'c) -> ('ok, 'c) tval combine : ('ok1, 'err) t -> ('ok2, 'err) t -> ok:('ok1 -> 'ok2 -> 'ok3) -> err:('err -> 'err -> 'err) -> ('ok3, 'err) tReturns
Okif both areOkandErrorotherwise.
val combine_errors : ('ok, 'err) t list -> ('ok list, 'err list) tcombine_errors tsreturnsOkif every element intsisOk, else it returnsErrorwith all the errors ints.This is similar to
allfromMonad.S2, with the difference thatallonly returns the first error.
val combine_errors_unit : (unit, 'err) t list -> (unit, 'err list) tcombine_errors_unitreturnsOkif every element intsisOk (), else it returnsErrorwith all the errors ints, likecombine_errors.
val to_either : ('ok, 'err) t -> ('ok, 'err) Base__Either0.tto_eitheris useful withList.partition_map. For example:let ints, exns = List.partition_map ["1"; "two"; "three"; "4"] ~f:(fun string -> Result.to_either (Result.try_with (fun () -> Int.of_string string)))
val of_either : ('ok, 'err) Base__Either0.t -> ('ok, 'err) tval ok_fst : ('ok, 'err) t -> ('ok, 'err) Base__Either0.tval ok_if_true : bool -> error:'err -> (unit, 'err) tok_if_truereturnsOk ()ifboolis true, andError errorif it is false.
val try_with : (unit -> 'a) -> ('a, exn) t
module Export : sig ... end