Module Result
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt:DkSDKProject_DeclareAvailable(result CONSTRAINT "= " FINDLIBS result) DkSDKProject_MakeAvailable(result)Add the
Findlib::resultlibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::result)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install result.nullEdit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (result (>= ))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "result" {>= ""} ]Then run:
opam install . --deps-only
FINALLY, add the result library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
result))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
result))include module type of struct include Stdlib.Result end
Results
type``('a, 'e) t`` = ``('a,'e)``result=
|Okof'a
|Errorof'e
The type for result values. Either a value Ok v or an error Error e.
valok :'a->``('a,'e)``result
ok v is Ok v.
valerror :'e->``('a,'e)``result
error e is Error e.
valvalue : ``('a,'e)``result->``default:'a->'a
value r ~default is v if r is Ok v and default otherwise.
valget_ok : ``('a,'e)``result->'a
get_ok r is v if r is Ok v and raise otherwise.
-
raises Invalid_argument
if
risError _.
valget_error : ``('a,'e)``result->'e
get_error r is e if r is Error e and raise otherwise.
-
raises Invalid_argument
if
risOk _.
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 _.
valfold : ``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.
valiter : ``('a->unit)``->``('a,'e)``result->unit
iter f r is f v if r is Ok v and () otherwise.
valiter_error : ``('e->unit)``->``('a,'e)``result->unit
iter_error f r is f e if r is Error e and () otherwise.
Predicates and comparisons
valis_ok : ``('a,'e)``result->bool
is_ok r is true if and only if r is Ok _.
valis_error : ``('a,'e)``result->bool
is_error r is true if and only if r is Error _.
valequal : ``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 _.
valcompare : ``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
valto_option : ``('a,'e)``result->'aoption
to_option r is r as an option, mapping Ok v to Some v and
Error _ to None.
valto_list : ``('a,'e)``result->'alist
to_list r is [v] if r is Ok v and [] otherwise.
valto_seq : ``('a,'e)``result->'aStdlib.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``('a, 'b) result`` = ``('a,'b)``Stdlib.Result.t=
|Okof'a
|Errorof'b
