Module B0_std.Result

module Result: sig .. end
Result values.

Except for the function of this section that's the Result module that went into 4.08.



Results


type ('a, 'e) t = ('a, 'e) Pervasives.result = 
| Ok of 'a
| Error of 'e
The type for result values. Either a value Ok v or an error Error e.
val ok : 'a -> ('a, 'e) Pervasives.result
ok v is Ok v.
val error : 'e -> ('a, 'e) Pervasives.result
error e is Error e.
val value : ('a, 'e) Pervasives.result -> default:'a -> 'a
value r ~default is v if r is Ok v and default otherwise.
val get_ok : ('a, 'e) Pervasives.result -> 'a
get_ok r is v if r is Ok v and
Raises Invalid_argument otherwise.
val get_error : ('a, 'e) Pervasives.result -> 'e
get_error r is e if r is Error e and
Raises Invalid_argument otherwise.
val bind : ('a, 'e) Pervasives.result ->
('a -> ('b, 'e) Pervasives.result) -> ('b, 'e) Pervasives.result
bind r f is Ok (f v) if r is Ok v and r if r is Error _.
val join : (('a, 'e) Pervasives.result, 'e) Pervasives.result ->
('a, 'e) Pervasives.result
join rr is r if rr is Ok r and rr if rr is Error _.
val map : ('a -> 'b) -> ('a, 'e) Pervasives.result -> ('b, 'e) Pervasives.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) Pervasives.result -> ('a, 'f) Pervasives.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) Pervasives.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) Pervasives.result -> unit
iter f r is f v if r is Ok v and () otherwise.
val iter_error : ('e -> unit) -> ('a, 'e) Pervasives.result -> unit
iter_error f r is f e if r is Error e and () otherwise.

Predicates and comparisons


val is_ok : ('a, 'e) Pervasives.result -> bool
is_ok r is true iff r is Ok _.
val is_error : ('a, 'e) Pervasives.result -> bool
is_error r is true iff r is Error _.
val equal : ok:('a -> 'a -> bool) ->
error:('e -> 'e -> bool) ->
('a, 'e) Pervasives.result -> ('a, 'e) Pervasives.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) Pervasives.result -> ('a, 'e) Pervasives.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.

Interacting with Stdlib exceptions


val to_failure : ('a, string) Pervasives.result -> 'a
to_failure r is failwith e if r is Error e and v if r is Ok v.
val catch_failure : (unit -> 'a) -> ('a, string) Pervasives.result
catch_failure f is try Ok (f ()) with Failure e -> Error e
val catch_sys_error : (unit -> 'a) -> ('a, string) Pervasives.result
catch_sys_error f is try Ok (f ()) with Sys_error e -> Error e

Converting


val to_option : ('a, 'e) Pervasives.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) Pervasives.result -> 'a list
to_list r is [v] if r is Ok v and [] otherwise.