package owi
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.
bind r f
is f v
if r
is Ok v
and r
if r
is Error _
.
join rr
is r
if rr
is Ok r
and rr
if rr
is Error _
.
map f r
is Ok (f v)
if r
is Ok v
and r
if r
is Error _
.
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.
type err = [
| `Alignment_too_large
| `Assert_failure
| `Bad_result
| `Call_stack_exhausted
| `Constant_expression_required
| `Constant_out_of_range
| `Did_not_fail_but_expected of string
| `Duplicate_export_name
| `Duplicate_global of string
| `Duplicate_local of string
| `Duplicate_memory of string
| `Duplicate_table of string
| `Found_bug of int
| `Global_is_immutable
| `Illegal_escape of string
| `Import_after_function
| `Import_after_global
| `Import_after_memory
| `Import_after_table
| `Incompatible_import_type
| `Inline_function_type
| `Invalid_result_arity
| `Lexer_unknown_operator of string
| `Malformed_utf8_encoding of string
| `Memory_size_too_large
| `Msg of string
| `Multiple_memories
| `Multiple_start_sections
| `No_error
| `Parse_fail of string
| `Size_minimum_greater_than_maximum
| `Start_function
| `Timeout
| `Trap of Trap.t
| `Type_mismatch of string
| `Unbound_last_module
| `Unbound_module of string
| `Unbound_name of string
| `Undeclared_function_reference
| `Unexpected_token
| `Unknown_function of int
| `Unknown_global
| `Unknown_import
| `Unknown_label
| `Unknown_local of string
| `Unknown_memory of int
| `Unknown_module of string
| `Unknown_operator
| `Unknown_type
| `Unsupported_file_extension of string
| `Wrong_memory_id of int
]
val err_to_string : err -> string
val failwith : err -> 'a