Base.ResultSourceResult is often used to handle error messages.
'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.
'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.
'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 : value_or_null) ('err : value_or_null). ('ok -> Sexplib0.Sexp.t) ->
('err -> Sexplib0.Sexp.t) ->
('ok, 'err) t__immediate ->
Sexplib0.Sexp.tval sexp_of_t__immediate64 :
('ok : value_or_null) ('err : value_or_null). ('ok -> Sexplib0.Sexp.t) ->
('err -> Sexplib0.Sexp.t) ->
('ok, 'err) t__immediate64 ->
Sexplib0.Sexp.tval sexp_of_t :
('ok : value_or_null) ('err : value_or_null). ('ok -> Sexplib0.Sexp.t) ->
('err -> Sexplib0.Sexp.t) ->
('ok, 'err) t ->
Sexplib0.Sexp.tval sexp_of_t__immediate__stack :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
Sexplib0.Sexp.t @ local) ->
('err @ local -> Sexplib0.Sexp.t @ local) ->
('ok, 'err) t__immediate @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__immediate64__stack :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
Sexplib0.Sexp.t @ local) ->
('err @ local -> Sexplib0.Sexp.t @ local) ->
('ok, 'err) t__immediate64 @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__stack :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
Sexplib0.Sexp.t @ local) ->
('err @ local -> Sexplib0.Sexp.t @ local) ->
('ok, 'err) t @ local ->
Sexplib0.Sexp.t @ localval t_of_sexp__immediate :
('ok : value_or_null) ('err : value_or_null). (Sexplib0.Sexp.t -> 'ok) ->
(Sexplib0.Sexp.t -> 'err) ->
Sexplib0.Sexp.t ->
('ok, 'err) t__immediateval t_of_sexp__immediate64 :
('ok : value_or_null) ('err : value_or_null). (Sexplib0.Sexp.t -> 'ok) ->
(Sexplib0.Sexp.t -> 'err) ->
Sexplib0.Sexp.t ->
('ok, 'err) t__immediate64val t_of_sexp :
('ok : value_or_null) ('err : value_or_null). (Sexplib0.Sexp.t -> 'ok) ->
(Sexplib0.Sexp.t -> 'err) ->
Sexplib0.Sexp.t ->
('ok, 'err) tval t_sexp_grammar__immediate :
('ok : value_or_null) ('err : value_or_null). 'ok Sexplib0.Sexp_grammar.t ->
'err Sexplib0.Sexp_grammar.t ->
('ok, 'err) t__immediate Sexplib0.Sexp_grammar.t @@ portableval t_sexp_grammar__immediate64 :
('ok : value_or_null) ('err : value_or_null). 'ok Sexplib0.Sexp_grammar.t ->
'err Sexplib0.Sexp_grammar.t ->
('ok, 'err) t__immediate64 Sexplib0.Sexp_grammar.t @@ portableval t_sexp_grammar :
('ok : value_or_null) ('err : value_or_null). 'ok Sexplib0.Sexp_grammar.t ->
'err Sexplib0.Sexp_grammar.t ->
('ok, 'err) t Sexplib0.Sexp_grammar.t @@ portableval compare__immediate :
('ok : value_or_null) ('err : value_or_null). ('ok -> 'ok -> int) ->
('err -> 'err -> int) ->
('ok, 'err) t__immediate ->
('ok, 'err) t__immediate ->
intval compare__immediate__local :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
'ok @ local ->
int) ->
('err @ local -> 'err @ local -> int) ->
('ok, 'err) t__immediate @ local ->
('ok, 'err) t__immediate @ local ->
intval compare__immediate64 :
('ok : value_or_null) ('err : value_or_null). ('ok -> 'ok -> int) ->
('err -> 'err -> int) ->
('ok, 'err) t__immediate64 ->
('ok, 'err) t__immediate64 ->
intval compare__immediate64__local :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
'ok @ local ->
int) ->
('err @ local -> 'err @ local -> int) ->
('ok, 'err) t__immediate64 @ local ->
('ok, 'err) t__immediate64 @ local ->
intval equal__immediate :
('ok : value_or_null) ('err : value_or_null). ('ok -> 'ok -> bool) ->
('err -> 'err -> bool) ->
('ok, 'err) t__immediate ->
('ok, 'err) t__immediate ->
boolval equal__immediate__local :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
'ok @ local ->
bool) ->
('err @ local -> 'err @ local -> bool) ->
('ok, 'err) t__immediate @ local ->
('ok, 'err) t__immediate @ local ->
boolval equal__immediate64 :
('ok : value_or_null) ('err : value_or_null). ('ok -> 'ok -> bool) ->
('err -> 'err -> bool) ->
('ok, 'err) t__immediate64 ->
('ok, 'err) t__immediate64 ->
boolval equal__immediate64__local :
('ok : value_or_null) ('err : value_or_null). ('ok @ local ->
'ok @ local ->
bool) ->
('err @ local -> 'err @ local -> bool) ->
('ok, 'err) t__immediate64 @ local ->
('ok, 'err) t__immediate64 @ local ->
boolval hash_fold_t__immediate :
('ok : value_or_null) ('err : value_or_null). (Ppx_hash_lib.Std.Hash.state ->
'ok ->
Ppx_hash_lib.Std.Hash.state) ->
(Ppx_hash_lib.Std.Hash.state -> 'err -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
('ok, 'err) t__immediate ->
Ppx_hash_lib.Std.Hash.stateval hash_fold_t__immediate64 :
('ok : value_or_null) ('err : value_or_null). (Ppx_hash_lib.Std.Hash.state ->
'ok ->
Ppx_hash_lib.Std.Hash.state) ->
(Ppx_hash_lib.Std.Hash.state -> 'err -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
('ok, 'err) t__immediate64 ->
Ppx_hash_lib.Std.Hash.stateval hash_fold_t :
('ok : value_or_null) ('err : value_or_null). (Ppx_hash_lib.Std.Hash.state ->
'ok ->
Ppx_hash_lib.Std.Hash.state) ->
(Ppx_hash_lib.Std.Hash.state -> 'err -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
('ok, 'err) t ->
Ppx_hash_lib.Std.Hash.stateval globalize__immediate :
('ok : value_or_null) ('err : value_or_null). ('ok @ local -> 'ok) ->
('err @ local -> 'err) ->
('ok, 'err) t__immediate @ local ->
('ok, 'err) t__immediateval globalize__immediate64 :
('ok : value_or_null) ('err : value_or_null). ('ok @ local -> 'ok) ->
('err @ local -> 'err) ->
('ok, 'err) t__immediate64 @ local ->
('ok, 'err) t__immediate64include Monad.S2__'value_or_null_mod_maybe_null'__local
with type (('a : value_or_null), 'err) t := ('a, 'err) tval join :
('a : value_or_null mod maybe_null) 'i 'j 'k 'p 'q. (('a, 'p) t, 'p) t ->
('a, 'p) tCombines 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.
Combines a list of t whose contents are unimportant.
val (>>=) :
('a : value_or_null mod maybe_null) ('b : value_or_null mod maybe_null) 'i 'j 'k 'p 'q.
('a, 'p) t ->
('a -> ('b, 'p) t) @ local ->
('b, 'p) tInfix bind.
val (>>|) :
('a : value_or_null mod maybe_null) ('b : value_or_null mod maybe_null) 'i 'j 'p 'q.
('a, 'p) t ->
('a -> 'b) @ local ->
('b, 'p) tInfix map.
module Error :
Monad.S2__'value_or_null_mod_maybe_null'__local
with type (('err : value_or_null), 'a) t := ('a, 'err) tinclude Invariant.S2 with type ('ok, 'err) t := ('ok, 'err) te.g., failf "Couldn't find bloogle %s" (Bloogle.to_string b).
val combine :
('ok1 : value_or_null) ('ok2 : value_or_null) ('ok3 : value_or_null) ('err : value_or_null).
('ok1, 'err) t ->
('ok2, 'err) t ->
ok:('ok1 -> ('ok2 -> 'ok3) @ local once) @ local once ->
err:('err -> ('err -> 'err) @ local once) @ local once ->
('ok3, 'err) t @@ portableReturns Ok if both are Ok and Error otherwise.
val combine_errors :
('ok : value_or_null) ('err : value_or_null). ('ok, 'err) t list ->
('ok list, 'err list) t @@ portablecombine_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.
val combine_errors_unit :
('err : value_or_null). (unit, 'err) t list ->
(unit, 'err list) t @@ portablecombine_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 : value_or_null) ('err : value_or_null). ('ok, 'err) t ->
('ok, 'err) Base__.Either0.t @@ portableto_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)))
;;ok_if_true returns Ok () if bool is true, and Error error if it is false.
val transpose_opt :
('ok : value_or_null) ('err : value_or_null). ('ok option, 'err) t ->
('ok, 'err) t option @@ portabletranspose_opt x transposes a result of an option into an option of a result
Concretely, Ok None maps to None, Ok (Some x) maps to Some (Ok x), and Error e maps to Some (Error e).
Inverse of Option.transpose_result.