Bos_setup.R
Sourceinclude module type of struct include Rresult.R end
The type for results.
ok v
is Ok v
.
error e
is Error e
.
reword_error reword r
is:
r
if r = Ok v
Error (reword e)
if r = Error e
get_ok r
is v
if r = Ok v
and raises Invalid_argument
otherwise.
get_error r
is e
if r = Error e
and raises Invalid_argument
otherwise.
val bind :
('a, 'b) Rresult.result ->
('a -> ('c, 'b) Rresult.result) ->
('c, 'b) Rresult.result
bind r f
is f v
if r = Ok v
and r
if r = Error _
.
map f r
is bind (fun v -> ret (f v))
r.
join r
is v
if r = Ok v
and r
otherwise.
val (>>=) :
('a, 'b) Rresult.result ->
('a -> ('c, 'b) Rresult.result) ->
('c, 'b) Rresult.result
r >>= f
is bind
r f
.
r >>| f
is map
r f
.
Infix operators.
The type for (error) messages.
msgf fmt ...
formats a message according to fmt
.
pp_msg ppf m
prints m
on ppf
.
error_msg s
is error (`Msg s)
.
error_msgf fmt ...
is an error message formatted according to fmt
.
val reword_error_msg :
?replace:bool ->
(string -> msg) ->
('a, msg) Rresult.result ->
('a, [> msg ]) Rresult.result
reword_error_msg ~replace reword r
is like reword_error
except if replace
is false
(default), the result of reword old_msg
is concatened, on a new line to the old message.
val error_to_msg :
pp_error:(Format.formatter -> 'b -> unit) ->
('a, 'b) Rresult.result ->
('a, [> msg ]) Rresult.result
error_to_msg ~pp_error r
converts errors in r
with pp_error
to an error message.
err_msg_to_invalid_arg r
is v
if r = Ok v
and
open_error_msg r
allows to combine a closed error message variant with other variants.
failwith_error_msg r
raises Failure m
if r
is Error (`Msg m)
.
Getting rid of null
was not enough.
The type for exception traps.
pp_exn_trap ppf bt
prints bt
on ppf
.
trap_exn f v
is f v
and traps any exception that may occur as an exception trap error.
error_exn_trap_to_msg r
converts exception trap errors in r
to an error message.
open_error_exn_trap r
allows to combine a closed exception trap error variant with other variants.
val pp :
ok:(Format.formatter -> 'a -> unit) ->
error:(Format.formatter -> 'b -> unit) ->
Format.formatter ->
('a, 'b) Rresult.result ->
unit
pp ~ok ~error ppf r
prints r
on ppf
using ok
and error
according to r
.
val dump :
ok:(Format.formatter -> 'a -> unit) ->
error:(Format.formatter -> 'b -> unit) ->
Format.formatter ->
('a, 'b) Rresult.result ->
unit
dump ~ok ~error
formats an OCaml result value using ok
or error
according to case, no parentheses are added.
is_ok r
is true
iff r = Ok _
.
is_error r
is true
iff r = Error _
.
val equal :
ok:('a -> 'a -> bool) ->
error:('b -> 'b -> bool) ->
('a, 'b) Rresult.result ->
('a, 'b) Rresult.result ->
bool
equal ~ok ~error r r'
tests r
and r'
for equality using ok
and error
.
val compare :
ok:('a -> 'a -> int) ->
error:('b -> 'b -> int) ->
('a, 'b) Rresult.result ->
('a, 'b) Rresult.result ->
int
compare ~ok ~error r r'
totally orders r
and r'
using ok
and error
.
to_option r
is Some v
if r = Ok v
and None
otherwise.
val of_option :
none:(unit -> ('a, 'b) Rresult.result) ->
'a option ->
('a, 'b) Rresult.result
of_option ~none r
is Ok v
if r = Some v
and none ()
otherwise.
to_presult r
is r
as a polymorphic variant result value.
of_presult pr
is pr
as a result value.
Warning. Using these functions is, most of the time, a bad idea.
ignore_error ~use r
is v
if r = Ok v
and use e
if r = Error e
.
val kignore_error :
use:('b -> ('a, 'c) Rresult.result) ->
('a, 'b) Rresult.result ->
('a, 'c) Rresult.result
kignore_error ~use r
is r
if r = Ok v
and use e
if r = Error e
.