Module Stdlib.Option
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::ocaml
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file 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 ...
))
Options
type
``'a t`` =
'a
option`` =
|
None
|
Some
of
'a
The type for option values. Either None
or a value Some v
.
val
none :
'a
option
none
is None
.
val
some :
'a
->
'a
option
some v
is Some v
.
val
value :
'a
option``
->
``default:
'a
->
'a
value o ~default
is v
if o
is Some v
and default
otherwise.
val
get :
'a
option``
->
'a
get o
is v
if o
is Some v
and raise otherwise.
-
raises Invalid_argument
if
o
isNone
.
val
bind :
'a
option``
->
``(
'a
->
'b
option``)``
->
'b
option
bind o f
is f v
if o
is Some v
and None
if o
is None
.
val
join :
'a
option`` option``
->
'a
option
join oo
is Some v
if oo
is Some (Some v)
and None
otherwise.
val
map : ``(
'a
->
'b
)``
->
'a
option``
->
'b
option
map f o
is None
if o
is None
and Some (f v)
is o
is
Some v
.
val
fold : ``none:
'a
->
``some:``(
'b
->
'a
)``
->
'b
option``
->
'a
fold ~none ~some o
is none
if o
is None
and some v
if o
is
Some v
.
val
iter : ``(
'a
->
unit)``
->
'a
option``
->
unit
iter f o
is f v
if o
is Some v
and ()
otherwise.
Predicates and comparisons
val
is_none :
'a
option``
->
bool
is_none o
is true
if and only if o
is None
.
val
is_some :
'a
option``
->
bool
is_some o
is true
if and only if o
is Some o
.
val
equal : ``(
'a
->
'a
->
bool)``
->
'a
option``
->
'a
option``
->
bool
equal eq o0 o1
is true
if and only if o0
and o1
are both None
or if they are Some v0
and Some v1
and eq v0 v1
is true
.
val
compare : ``(
'a
->
'a
->
int)``
->
'a
option``
->
'a
option``
->
int
compare cmp o0 o1
is a total order on options using cmp
to compare
values wrapped by Some _
. None
is smaller than Some _
values.
Converting
val
to_result : ``none:
'e
->
'a
option``
->
``(
'a
,
'e
)``
result
to_result ~none o
is Ok v
if o
is Some v
and Error none
otherwise.
val
to_list :
'a
option``
->
'a
list
to_list o
is []
if o
is None
and [v]
if o
is Some v
.
val
to_seq :
'a
option``
->
'a
Seq.t
to_seq o
is o
as a sequence. None
is the empty sequence and
Some v
is the singleton sequence containing v
.