Core.ResultThis module extends Base.Result.
type (('a : value_or_null), ('b : value_or_null)) t = ('a, 'b) Base.Result.t = val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t -> Bin_prot.Shape.tval bin_size_t :
'a 'b. ('a : value_or_null) Bin_prot.Size.sizer ->
('b : value_or_null) Bin_prot.Size.sizer ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Size.sizerval bin_size_t__local :
'a 'b. ('a : value_or_null) Bin_prot.Size.sizer__local ->
('b : value_or_null) Bin_prot.Size.sizer__local ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Size.sizer__localval bin_write_t :
'a 'b. ('a : value_or_null) Bin_prot.Write.writer ->
('b : value_or_null) Bin_prot.Write.writer ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Write.writerval bin_write_t__local :
'a 'b. ('a : value_or_null) Bin_prot.Write.writer__local ->
('b : value_or_null) Bin_prot.Write.writer__local ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Write.writer__localval bin_writer_t :
'a 'b. ('a : value_or_null) Bin_prot.Type_class.writer ->
('b : value_or_null) Bin_prot.Type_class.writer ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Type_class.writerval bin_read_t :
'a 'b. ('a : value_or_null) Bin_prot.Read.reader ->
('b : value_or_null) Bin_prot.Read.reader ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Read.readerval __bin_read_t__ :
'a 'b. ('a : value_or_null) Bin_prot.Read.reader ->
('b : value_or_null) Bin_prot.Read.reader ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Read.vtag_readerval bin_reader_t :
'a 'b. ('a : value_or_null) Bin_prot.Type_class.reader ->
('b : value_or_null) Bin_prot.Type_class.reader ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Type_class.readerval bin_t :
'a 'b. ('a : value_or_null) Bin_prot.Type_class.t ->
('b : value_or_null) Bin_prot.Type_class.t ->
(('a : value_or_null), ('b : value_or_null)) t Bin_prot.Type_class.tmodule Diff : sig ... endval quickcheck_generator :
'a 'b. ('a : value_or_null)
Ppx_quickcheck_runtime.Base_quickcheck.Generator.t ->
('b : value_or_null) Ppx_quickcheck_runtime.Base_quickcheck.Generator.t ->
(('a : value_or_null), ('b : value_or_null)) t
Ppx_quickcheck_runtime.Base_quickcheck.Generator.tval quickcheck_observer :
'a 'b. ('a : value_or_null) Ppx_quickcheck_runtime.Base_quickcheck.Observer.t ->
('b : value_or_null) Ppx_quickcheck_runtime.Base_quickcheck.Observer.t ->
(('a : value_or_null), ('b : value_or_null)) t
Ppx_quickcheck_runtime.Base_quickcheck.Observer.tval quickcheck_shrinker :
'a 'b. ('a : value_or_null) Ppx_quickcheck_runtime.Base_quickcheck.Shrinker.t ->
('b : value_or_null) Ppx_quickcheck_runtime.Base_quickcheck.Shrinker.t ->
(('a : value_or_null), ('b : value_or_null)) t
Ppx_quickcheck_runtime.Base_quickcheck.Shrinker.tval typerep_of_t :
'a Typerep_lib.Std.Typerep.t ->
'b Typerep_lib.Std.Typerep.t ->
('a, 'b) t Typerep_lib.Std.Typerep.t @@ portableval typename_of_t :
'a Typerep_lib.Std.Typename.t ->
'b Typerep_lib.Std.Typename.t ->
('a, 'b) t Typerep_lib.Std.Typename.t @@ portabletype (('ok : value_or_null), ('err : value_or_null)) t__immediate =
('ok, 'err) result =
'ok is the return type, and 'err is 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 pred could be nat option, but (nat, string) Result.t gives more control over the error message.
and (('ok : value_or_null), ('err : value_or_null)) t__immediate64 =
('ok, 'err) result =
'ok is the return type, and 'err is 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 pred could be nat option, but (nat, string) Result.t gives more control over the error message.
val sexp_of_t__immediate :
'ok 'err. (('ok : value_or_null) -> Sexplib0.Sexp.t) ->
(('err : value_or_null) -> Sexplib0.Sexp.t) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate ->
Sexplib0.Sexp.tval sexp_of_t__immediate64 :
'ok 'err. (('ok : value_or_null) -> Sexplib0.Sexp.t) ->
(('err : value_or_null) -> Sexplib0.Sexp.t) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 ->
Sexplib0.Sexp.tval sexp_of_t :
'ok 'err. (('ok : value_or_null) -> Sexplib0.Sexp.t) ->
(('err : value_or_null) -> Sexplib0.Sexp.t) ->
(('ok : value_or_null), ('err : value_or_null)) t ->
Sexplib0.Sexp.tval sexp_of_t__immediate__stack :
'ok 'err. (('ok : value_or_null) @ local -> Sexplib0.Sexp.t @ local) ->
(('err : value_or_null) @ local -> Sexplib0.Sexp.t @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__immediate64__stack :
'ok 'err. (('ok : value_or_null) @ local -> Sexplib0.Sexp.t @ local) ->
(('err : value_or_null) @ local -> Sexplib0.Sexp.t @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__stack :
'ok 'err. (('ok : value_or_null) @ local -> Sexplib0.Sexp.t @ local) ->
(('err : value_or_null) @ local -> Sexplib0.Sexp.t @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t @ local ->
Sexplib0.Sexp.t @ localval t_of_sexp__immediate :
'ok 'err. (Sexplib0.Sexp.t -> ('ok : value_or_null)) ->
(Sexplib0.Sexp.t -> ('err : value_or_null)) ->
Sexplib0.Sexp.t ->
(('ok : value_or_null), ('err : value_or_null)) t__immediateval t_of_sexp__immediate64 :
'ok 'err. (Sexplib0.Sexp.t -> ('ok : value_or_null)) ->
(Sexplib0.Sexp.t -> ('err : value_or_null)) ->
Sexplib0.Sexp.t ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64val t_of_sexp :
'ok 'err. (Sexplib0.Sexp.t -> ('ok : value_or_null)) ->
(Sexplib0.Sexp.t -> ('err : value_or_null)) ->
Sexplib0.Sexp.t ->
(('ok : value_or_null), ('err : value_or_null)) tval t_sexp_grammar__immediate :
'ok 'err. ('ok : value_or_null) Sexplib0.Sexp_grammar.t ->
('err : value_or_null) Sexplib0.Sexp_grammar.t ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate
Sexplib0.Sexp_grammar.t @@ portableval t_sexp_grammar__immediate64 :
'ok 'err. ('ok : value_or_null) Sexplib0.Sexp_grammar.t ->
('err : value_or_null) Sexplib0.Sexp_grammar.t ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64
Sexplib0.Sexp_grammar.t @@ portableval t_sexp_grammar :
'ok 'err. ('ok : value_or_null) Sexplib0.Sexp_grammar.t ->
('err : value_or_null) Sexplib0.Sexp_grammar.t ->
(('ok : value_or_null), ('err : value_or_null)) t Sexplib0.Sexp_grammar.t @@ portableval compare__immediate :
'ok 'err. (('ok : value_or_null) -> ('ok : value_or_null) -> int) ->
(('err : value_or_null) -> ('err : value_or_null) -> int) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate ->
intval compare__immediate__local :
'ok 'err. (('ok : value_or_null) @ local ->
(('ok : value_or_null) @ local ->
int) @ local) ->
(('err : value_or_null) @ local ->
(('err : value_or_null) @ local ->
int) @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate @ local ->
((('ok : value_or_null), ('err : value_or_null)) t__immediate @ local ->
int) @ localval compare__immediate64 :
'ok 'err. (('ok : value_or_null) -> ('ok : value_or_null) -> int) ->
(('err : value_or_null) -> ('err : value_or_null) -> int) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 ->
intval compare__immediate64__local :
'ok 'err. (('ok : value_or_null) @ local ->
(('ok : value_or_null) @ local ->
int) @ local) ->
(('err : value_or_null) @ local ->
(('err : value_or_null) @ local ->
int) @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 @ local ->
((('ok : value_or_null), ('err : value_or_null)) t__immediate64 @ local ->
int) @ localval compare__local :
'ok 'err. (('ok : value_or_null) @ local ->
(('ok : value_or_null) @ local ->
int) @ local) ->
(('err : value_or_null) @ local ->
(('err : value_or_null) @ local ->
int) @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t @ local ->
((('ok : value_or_null), ('err : value_or_null)) t @ local ->
int) @ localval equal__immediate :
'ok 'err. (('ok : value_or_null) -> ('ok : value_or_null) -> bool) ->
(('err : value_or_null) -> ('err : value_or_null) -> bool) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate ->
boolval equal__immediate__local :
'ok 'err. (('ok : value_or_null) @ local ->
(('ok : value_or_null) @ local ->
bool) @ local) ->
(('err : value_or_null) @ local ->
(('err : value_or_null) @ local ->
bool) @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate @ local ->
((('ok : value_or_null), ('err : value_or_null)) t__immediate @ local ->
bool) @ localval equal__immediate64 :
'ok 'err. (('ok : value_or_null) -> ('ok : value_or_null) -> bool) ->
(('err : value_or_null) -> ('err : value_or_null) -> bool) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 ->
boolval equal__immediate64__local :
'ok 'err. (('ok : value_or_null) @ local ->
(('ok : value_or_null) @ local ->
bool) @ local) ->
(('err : value_or_null) @ local ->
(('err : value_or_null) @ local ->
bool) @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 @ local ->
((('ok : value_or_null), ('err : value_or_null)) t__immediate64 @ local ->
bool) @ localval equal__local :
'ok 'err. (('ok : value_or_null) @ local ->
(('ok : value_or_null) @ local ->
bool) @ local) ->
(('err : value_or_null) @ local ->
(('err : value_or_null) @ local ->
bool) @ local) ->
(('ok : value_or_null), ('err : value_or_null)) t @ local ->
((('ok : value_or_null), ('err : value_or_null)) t @ local ->
bool) @ localval hash_fold_t__immediate :
'ok 'err. (Ppx_hash_lib.Std.Hash.state ->
('ok : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
(Ppx_hash_lib.Std.Hash.state ->
('err : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate ->
Ppx_hash_lib.Std.Hash.stateval hash_fold_t__immediate64 :
'ok 'err. (Ppx_hash_lib.Std.Hash.state ->
('ok : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
(Ppx_hash_lib.Std.Hash.state ->
('err : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
(('ok : value_or_null), ('err : value_or_null)) t__immediate64 ->
Ppx_hash_lib.Std.Hash.stateval hash_fold_t :
'ok 'err. (Ppx_hash_lib.Std.Hash.state ->
('ok : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
(Ppx_hash_lib.Std.Hash.state ->
('err : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
(('ok : value_or_null), ('err : value_or_null)) t ->
Ppx_hash_lib.Std.Hash.stateval globalize__immediate :
'ok 'err. ('ok @ local -> 'ok) ->
('err @ local -> 'err) ->
('ok, 'err) t__immediate @ local ->
('ok, 'err) t__immediateval globalize__immediate64 :
'ok 'err. ('ok @ local -> 'ok) ->
('err @ local -> 'err) ->
('ok, 'err) t__immediate64 @ local ->
('ok, 'err) t__immediate64include Base.Monad.S2__'value_or_null_mod_maybe_null'__local
with type (('a : value_or_null), 'err) t := ('a, 'err) tval return : 'a 'i 'p 'q. 'a -> ('a, 'p) tConvert a value to a t.
Sequences computations. bind t ~f computes f v for value(s) v in t. Well-behaved monads satisfy these "laws" (where ( >>= ) is the infix bind operator):
map t ~f is equivalent to bind t ~f:(fun x -> return (f x))return x >>= f is equivalent to f xt >>= return is equivalent to t(t >>= f) >>= g is equivalent to t >>= fun x -> f x >>= gCombines nested t into just one layer. Equivalent to bind t ~f:Fn.id.
Ignores contained values of t. Equivalent to map t ~f:ignore.
Combines a list of t whose contents are unimportant.
module Monad_infix = Base.Result.Monad_infixmodule Let_syntax = Base.Result.Let_syntaxmodule Error = Base.Result.Errorval invariant : ('a -> unit) -> ('b -> unit) -> ('a, 'b) t -> unitval fail : 'err -> (_, 'err) t @@ portablee.g., failf "Couldn't find bloogle %s" (Bloogle.to_string b).
val is_ok : 'ok 'err. ('ok, 'err) t -> boolval is_error : 'ok 'err. ('ok, 'err) t -> boolval ok : 'ok 'err. ('ok, 'err) t -> 'ok option @@ portableval ok_exn : 'ok. ('ok, exn) t -> 'ok @@ portableval ok_or_failwith : 'ok. ('ok, string) t -> 'ok @@ portableval error : 'ok 'err. ('ok, 'err) t -> 'err option @@ portableval of_option : 'ok 'err. 'ok option -> error:'err -> ('ok, 'err) t @@ portableval of_option_or_thunk :
'ok 'err. 'ok option ->
error:(unit -> 'err) ->
('ok, 'err) t @@ portableval iter :
'ok 'err. ('ok, 'err) t ->
f:('ok -> unit) @ local ->
unit @@ portableval iter_error :
'ok 'err. ('ok, 'err) t ->
f:('err -> unit) @ local ->
unit @@ portableval combine :
'ok1 'ok2 'ok3 'err. ('ok1, 'err) t ->
('ok2, 'err) t ->
ok:('ok1 -> ('ok2 -> 'ok3) @ local) @ local ->
(err:('err -> ('err -> 'err) @ local) @ local ->
('ok3, 'err) t) @ local @@ portableReturns Ok if both are Ok and Error otherwise.
combine_errors ts returns Ok if every element in ts is Ok, else it returns Error with all the errors in ts.
This is similar to all from Monad.S2, with the difference that all only returns the first error.
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 to_either : 'ok 'err. ('ok, 'err) t -> ('ok, 'err) Base__.Either0.tto_either is useful with List.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. ('ok, 'err) Base__.Either0.t -> ('ok, 'err) tval ok_if_true : 'err. bool -> error:'err -> (unit, 'err) t @@ portableok_if_true returns Ok () if bool is true, and Error error if it is false.
val try_with : 'a. (unit -> 'a) @ local -> ('a, exn) t @@ portablemodule Export = Base.Result.Exportmodule Stable : sig ... end