package spin
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=2fea29779b8751651e101064affbfc482c62c68fc6672f28a314ae60f30c75c2
sha512=df00a63f6f12fe8ebd1626356741256f00c2c51878f227bca4243c83ff8dbbe1734fe7ce70d22ecb134968795e166ea5770fc038551f48fb6d510e52c3234c2e
doc/spin.std/Spin_std/Result/index.html
Module Spin_std.Result
include module type of struct include Base.Result end
'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 t_sexp_grammar :
'ok Sexplib0.Sexp_grammar.t ->
'err Sexplib0.Sexp_grammar.t ->
('ok, 'err) t Sexplib0.Sexp_grammar.tval hash_fold_t :
(Base.Hash.state -> 'a -> Base.Hash.state) ->
(Base.Hash.state -> 'b -> Base.Hash.state) ->
Base.Hash.state ->
('a, 'b) t ->
Base.Hash.stateinclude Base.Monad.S2 with type ('a, 'err) t := ('a, 'err) t
module Monad_infix = Base.Result.Monad_infixval return : 'a -> ('a, _) tmodule Error = Base.Result.Errorval invariant : ('a -> unit) -> ('b -> unit) -> ('a, 'b) t -> unitval fail : 'err -> (_, 'err) te.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 combine :
('ok1, 'err) t ->
('ok2, 'err) t ->
ok:('ok1 -> 'ok2 -> 'ok3) ->
err:('err -> 'err -> 'err) ->
('ok3, 'err) tReturns 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) 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) 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_true returns Ok () if bool is true, and Error error if it is false.
val try_with : (unit -> 'a) -> ('a, exn) tmodule Export = Base.Result.Exportmodule Let_syntax : sig ... end