package owi

  1. Overview
  2. Docs
include module type of Result

Results

val ok : 'a -> ('a, 'e) result

ok v is Ok v.

val error : 'e -> ('a, 'e) result

error e is Error e.

val value : ('a, 'e) result -> default:'a -> 'a

value r ~default is v if r is Ok v and default otherwise.

val get_ok : ('a, 'e) result -> 'a

get_ok r is v if r is Ok v and raise otherwise.

val get_error : ('a, 'e) result -> 'e

get_error r is e if r is Error e and raise otherwise.

val bind : ('a, 'e) result -> ('a -> ('b, 'e) result) -> ('b, 'e) result

bind r f is f v if r is Ok v and r if r is Error _.

val join : (('a, 'e) result, 'e) result -> ('a, 'e) result

join rr is r if rr is Ok r and rr if rr is Error _.

val map : ('a -> 'b) -> ('a, 'e) result -> ('b, 'e) result

map f r is Ok (f v) if r is Ok v and r if r is Error _.

val map_error : ('e -> 'f) -> ('a, 'e) result -> ('a, 'f) result

map_error f r is Error (f e) if r is Error e and r if r is Ok _.

val fold : ok:('a -> 'c) -> error:('e -> 'c) -> ('a, 'e) result -> 'c

fold ~ok ~error r is ok v if r is Ok v and error e if r is Error e.

val iter : ('a -> unit) -> ('a, 'e) result -> unit

iter f r is f v if r is Ok v and () otherwise.

val iter_error : ('e -> unit) -> ('a, 'e) result -> unit

iter_error f r is f e if r is Error e and () otherwise.

Predicates and comparisons

val is_ok : ('a, 'e) result -> bool

is_ok r is true if and only if r is Ok _.

val is_error : ('a, 'e) result -> bool

is_error r is true if and only if r is Error _.

val equal : ok:('a -> 'a -> bool) -> error:('e -> 'e -> bool) -> ('a, 'e) result -> ('a, 'e) result -> bool

equal ~ok ~error r0 r1 tests equality of r0 and r1 using ok and error to respectively compare values wrapped by Ok _ and Error _.

val compare : ok:('a -> 'a -> int) -> error:('e -> 'e -> int) -> ('a, 'e) result -> ('a, 'e) result -> int

compare ~ok ~error r0 r1 totally orders r0 and r1 using ok and error to respectively compare values wrapped by Ok _ and Error _. Ok _ values are smaller than Error _ values.

Converting

val to_option : ('a, 'e) result -> 'a option

to_option r is r as an option, mapping Ok v to Some v and Error _ to None.

val to_list : ('a, 'e) result -> 'a list

to_list r is [v] if r is Ok v and [] otherwise.

val to_seq : ('a, 'e) result -> 'a Seq.t

to_seq r is r as a sequence. Ok v is the singleton sequence containing v and Error _ is the empty sequence.

type err = [
  1. | `Alignment_too_large
  2. | `Assert_failure
  3. | `Bad_result
  4. | `Call_stack_exhausted
  5. | `Constant_expression_required
  6. | `Constant_out_of_range
  7. | `Did_not_fail_but_expected of string
  8. | `Duplicate_export_name
  9. | `Duplicate_global of string
  10. | `Duplicate_local of string
  11. | `Duplicate_memory of string
  12. | `Duplicate_table of string
  13. | `Found_bug of int
  14. | `Global_is_immutable
  15. | `Illegal_escape of string
  16. | `Import_after_function
  17. | `Import_after_global
  18. | `Import_after_memory
  19. | `Import_after_table
  20. | `Incompatible_import_type
  21. | `Inline_function_type
  22. | `Invalid_result_arity
  23. | `Lexer_unknown_operator of string
  24. | `Malformed_utf8_encoding of string
  25. | `Memory_size_too_large
  26. | `Msg of string
  27. | `Multiple_memories
  28. | `Multiple_start_sections
  29. | `No_error
  30. | `Parse_fail of string
  31. | `Size_minimum_greater_than_maximum
  32. | `Start_function
  33. | `Timeout
  34. | `Trap of Trap.t
  35. | `Type_mismatch of string
  36. | `Unbound_last_module
  37. | `Unbound_module of string
  38. | `Unbound_name of string
  39. | `Undeclared_function_reference
  40. | `Unexpected_token
  41. | `Unknown_function of int
  42. | `Unknown_global
  43. | `Unknown_import
  44. | `Unknown_label
  45. | `Unknown_local of string
  46. | `Unknown_memory of int
  47. | `Unknown_module of string
  48. | `Unknown_operator
  49. | `Unknown_type
  50. | `Unsupported_file_extension of string
  51. | `Wrong_memory_id of int
]
type 'a t = ('a, err) Result.t
val err_to_string : err -> string
val failwith : err -> 'a
OCaml

Innovation. Community. Security.