Module Base.Result
Result is often used to handle error messages.
type ('ok, 'err) t= ('ok, 'err) Base__.Import.Caml.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.
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
include Base__.Monad_intf.Syntax2 with type ('a, 'e) t := ('a, 'e) t
module Let_syntax : sig ... endmodule Monad_infix : Base__.Monad_intf.Infix2 with type ('a, 'e) t := ('a, 'e) tval bind : ('a, 'e) t -> f:('a -> ('b, 'e) t) -> ('b, 'e) tval return : 'a -> ('a, _) tval map : ('a, 'e) t -> f:('a -> 'b) -> ('b, 'e) tval join : (('a, 'e) t, 'e) t -> ('a, 'e) tval ignore_m : (_, 'e) t -> (unit, 'e) tval all : ('a, 'e) t list -> ('a list, 'e) tval all_unit : (unit, 'e) t list -> (unit, 'e) t
include Base__.Invariant_intf.S2 with type ('ok, 'err) t := ('ok, 'err) t
val invariant : 'a Base__.Invariant_intf.inv -> 'b Base__.Invariant_intf.inv -> ('a, 'b) t Base__.Invariant_intf.inv
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 ok_fst : ('ok, 'err) t -> [ `Fst of 'ok | `Snd of 'err ]ok_fstis useful withList.partition_map. Continuing the above example:let rics, errors = List.partition_map ~f:Result.ok_fst (List.map ~f:ric_of_ticker ["AA"; "F"; "CSCO"; "AAPL"])
val 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) tval ok_unit : (unit, _) tok_unit = Ok (), used to avoid allocation as a performance hack.
module Export : sig ... end