Module Stdlib.Either
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(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)Add the
Findlib::ocamllibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]Then run:
opam install . --deps-only
FINALLY, add the library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
))type``('a, 'b) t`` =
|Leftof'a
|Rightof'b
A value of ('a, 'b) Either.t contains either a value of 'a or a
value of 'b
valleft :'a->``('a,'b)``t
left v is Left v.
valright :'b->``('a,'b)``t
right v is Right v.
valis_left : ``('a,'b)``t->bool
is_left (Left v) is true, is_left (Right v) is false.
valis_right : ``('a,'b)``t->bool
is_right (Left v) is false, is_right (Right v) is true.
valfind_left : ``('a,'b)``t->'aoption
find_left (Left v) is Some v, find_left (Right _) is None
valfind_right : ``('a,'b)``t->'boption
find_right (Right v) is Some v, find_right (Left _) is None
map_left f e is Left (f v) if e is Left v and e if e is
Right _.
map_right f e is Right (f v) if e is Right v and e if e is
Left _.
valmap : ``left:``('a1->'a2)``->``right:``('b1->'b2)``->``('a1,'b1)``t->``('a2,'b2)``t
map ~left ~right (Left v) is Left (left v),
map ~left ~right (Right v) is Right (right v).
valfold : ``left:``('a->'c)``->``right:``('b->'c)``->``('a,'b)``t->'c
fold ~left ~right (Left v) is left v, and
fold ~left ~right (Right v) is right v.
valiter : ``left:``('a->unit)``->``right:``('b->unit)``->``('a,'b)``t->unit
iter ~left ~right (Left v) is left v, and
iter ~left ~right (Right v) is right v.
valfor_all : ``left:``('a->bool)``->``right:``('b->bool)``->``('a,'b)``t->bool
for_all ~left ~right (Left v) is left v, and
for_all ~left ~right (Right v) is right v.
valequal : ``left:``('a->'a->bool)``->``right:``('b->'b->bool)``->``('a,'b)``t->``('a,'b)``t->bool
equal ~left ~right e0 e1 tests equality of e0 and e1 using left
and right to respectively compare values wrapped by Left _ and
Right _.
valcompare : ``left:``('a->'a->int)``->``right:``('b->'b->int)``->``('a,'b)``t->``('a,'b)``t->int
compare ~left ~right e0 e1 totally orders e0 and e1 using left
and right to respectively compare values wrapped by Left _ and
Right _. Left _ values are smaller than Right _ values.
