package core

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Core.ResultSource

This module extends Base.Result.

Sourcetype ('a, 'b) t = ('a, 'b) Base.Result.t =
  1. | Ok of 'a
  2. | Error of 'b
include Bin_prot.Binable.S2 with type ('a, 'b) t := ('a, 'b) t
Sourceval bin_size_t : ('a, 'b, ('a, 'b) t) Bin_prot.Size.sizer2
Sourceval bin_write_t : ('a, 'b, ('a, 'b) t) Bin_prot.Write.writer2
Sourceval bin_read_t : ('a, 'b, ('a, 'b) t) Bin_prot.Read.reader2
Sourceval __bin_read_t__ : ('a, 'b, int -> ('a, 'b) t) Bin_prot.Read.reader2
Sourceval bin_writer_t : ('a, 'b, ('a, 'b) t) Bin_prot.Type_class.S2.writer
Sourceval bin_reader_t : ('a, 'b, ('a, 'b) t) Bin_prot.Type_class.S2.reader
Sourceval bin_t : ('a, 'b, ('a, 'b) t) Bin_prot.Type_class.S2.t
include Ppx_compare_lib.Comparable.S2 with type ('a, 'b) t := ('a, 'b) t
include Ppx_compare_lib.Equal.S2 with type ('a, 'b) t := ('a, 'b) t
include Ppx_hash_lib.Hashable.S2 with type ('a, 'b) t := ('a, 'b) t
include Sexplib0.Sexpable.S2 with type ('a, 'b) t := ('a, 'b) t
include Sexplib0.Sexpable.S2 with type ('ok, 'err) t := ('ok, 'err) t
Sourceval t_of_sexp : (Sexplib0.Sexp.t -> 'a) -> (Sexplib0.Sexp.t -> 'b) -> Sexplib0.Sexp.t -> ('a, 'b) t
Sourceval sexp_of_t : ('a -> Sexplib0.Sexp.t) -> ('b -> Sexplib0.Sexp.t) -> ('a, 'b) t -> Sexplib0.Sexp.t
Sourceval t_sexp_grammar : 'ok Sexplib0.Sexp_grammar.t -> 'err Sexplib0.Sexp_grammar.t -> ('ok, 'err) t Sexplib0.Sexp_grammar.t
Sourceval compare : ('a -> 'a -> int) -> ('b -> 'b -> int) -> ('a, 'b) t -> ('a, 'b) t -> int
Sourceval equal : ('a -> 'a -> bool) -> ('b -> 'b -> bool) -> ('a, 'b) t -> ('a, 'b) t -> bool
Sourceval globalize : ('ok -> 'ok) -> ('err -> 'err) -> ('ok, 'err) t -> ('ok, 'err) t
Sourceval 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.state
include Base.Monad.S2_local with type ('a, 'err) t := ('a, 'err) t
Sourceval (>>=) : ('a, 'e) t -> ('a -> ('b, 'e) t) -> ('b, 'e) t
Sourceval (>>|) : ('a, 'e) t -> ('a -> 'b) -> ('b, 'e) t
Sourcemodule Let_syntax = Base.Result.Let_syntax
Sourcemodule Monad_infix = Base.Result.Monad_infix
Sourceval bind : ('a, 'e) t -> f:('a -> ('b, 'e) t) -> ('b, 'e) t
Sourceval return : 'a -> ('a, _) t
Sourceval join : (('a, 'e) t, 'e) t -> ('a, 'e) t
Sourceval ignore_m : (_, 'e) t -> (unit, 'e) t
Sourceval all : ('a, 'e) t list -> ('a list, 'e) t
Sourceval all_unit : (unit, 'e) t list -> (unit, 'e) t
Sourceval invariant : ('a -> unit) -> ('b -> unit) -> ('a, 'b) t -> unit
Sourceval fail : 'err -> (_, 'err) t
Sourceval failf : ('a, unit, string, (_, string) t) format4 -> 'a

e.g., failf "Couldn't find bloogle %s" (Bloogle.to_string b).

Sourceval is_ok : (_, _) t -> bool
Sourceval is_error : (_, _) t -> bool
Sourceval ok : ('ok, _) t -> 'ok option
Sourceval ok_exn : ('ok, exn) t -> 'ok
Sourceval ok_or_failwith : ('ok, string) t -> 'ok
Sourceval error : (_, 'err) t -> 'err option
Sourceval of_option : 'ok option -> error:'err -> ('ok, 'err) t
Sourceval iter : ('ok, _) t -> f:('ok -> unit) -> unit
Sourceval iter_error : (_, 'err) t -> f:('err -> unit) -> unit
Sourceval map : ('ok, 'err) t -> f:('ok -> 'c) -> ('c, 'err) t
Sourceval map_error : ('ok, 'err) t -> f:('err -> 'c) -> ('ok, 'c) t
Sourceval combine : ('ok1, 'err) t -> ('ok2, 'err) t -> ok:('ok1 -> 'ok2 -> 'ok3) -> err:('err -> 'err -> 'err) -> ('ok3, 'err) t

Returns Ok if both are Ok and Error otherwise.

Sourceval combine_errors : ('ok, 'err) t list -> ('ok list, 'err list) t

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.

Sourceval combine_errors_unit : (unit, 'err) t list -> (unit, 'err list) t

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.

Sourceval to_either : ('ok, 'err) t -> ('ok, 'err) Base__.Either0.t

to_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)))
Sourceval of_either : ('ok, 'err) Base__.Either0.t -> ('ok, 'err) t
Sourceval ok_fst : ('ok, 'err) t -> ('ok, 'err) Base__.Either0.t
  • deprecated [since 2020-01] Use [to_either] instead.
Sourceval ok_if_true : bool -> error:'err -> (unit, 'err) t

ok_if_true returns Ok () if bool is true, and Error error if it is false.

Sourceval try_with : (unit -> 'a) -> ('a, exn) t
Sourcemodule Export = Base.Result.Export
Sourcemodule Stable : sig ... end
OCaml

Innovation. Community. Security.