Модуль Option
module Option: sig .. end
Значения типа option.
Значения типа option явно указывают на наличие или отсутствие значения.
- Начиная с версии 4.08
Варианты
type 'a t = 'a option =
|
| None
|
|
| Some of
|
Тип для значений типа option. Либо None, либо значение Some v.
val none : 'a option
none — это None.
val some : 'a -> 'a option
some v — это Some v.
val value : 'a option -> default:'a -> 'a
value o ~default — это v, если o — Some v, и default в противном случае.
val get : 'a option -> 'a
get o — это v, если o — Some v, и вызывает исключение в противном случае.
-
Вызывает
Invalid_argument, еслиo—None.
val bind : 'a option -> ('a -> 'b option) -> 'b option
bind o f — это f v, если o — Some v, и None, если o — None.
val join : 'a option option -> 'a option
join oo — это Some v, если oo — Some (Some v), и None в противном случае.
val map : ('a -> 'b) -> 'a option -> 'b option
map f o — это None, если o — None, и Some (f v), если o — Some v.
val product : 'a option -> 'b option -> ('a * 'b) option
product o0 o1 — это Some (v0, v1), если o0 — Some v0, а o1 — Some, и
v1None в противном случае.
- Начиная с версии 5.5
val fold : none:'a -> some:('b -> 'a) -> 'b option -> 'a
fold ~none ~some o — это none, если o — None, и some v, если o — Some v.
val iter : ('a -> unit) -> 'a option -> unit
iter f o — это f v, если o — Some v, и () в противном случае.
val blend : ('a -> 'a -> 'a) -> 'a option -> 'a option -> 'a option
blend f o1 o2 — это o1, если o2 — None, o2, если o1 — None, и Some (f v1 v2), если o1 — Some v1 и o2 — Some v2.
- Начиная с версии 5.5
val for_all : ('a -> bool) -> 'a option -> bool
for_all p ведёт себя подобно List.for_all p для списка, содержащего ноль или один элемент:
-
for_all p None—true, -
for_all p (Some v)—p v.
- Начиная с версии 5.5
val exists : ('a -> bool) -> 'a option -> bool
exists p ведёт себя подобно List.exists p для списка, содержащего ноль или один элемент:
-
exists p None—false, -
exists p (Some v)—p v.
- Начиная с версии 5.5
Предикаты и сравнения
val is_none : 'a option -> bool
is_none o — true тогда и только тогда, когда o — None.
val is_some : 'a option -> bool
is_some o — true тогда и только тогда, когда o — Some o.
val equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool
equal eq o0 o1 — true тогда и только тогда, когда o0 и o1 оба являются None либо когда они являются Some v0 и Some v1, а eq v0 v1 — true.
val compare : ('a -> 'a -> int) -> 'a option -> 'a option -> int
compare cmp o0 o1 задаёт линейный порядок на значениях типа option, используя cmp для сравнения значений, обёрнутых в Some _. None меньше значений Some _.
Преобразование
val to_result : none:'e -> 'a option -> ('a, 'e) result
to_result ~none o — это Ok v, если o — Some v, и Error none в противном случае.
val to_list : 'a option -> 'a list
to_list o — это [], если o — None, и [v], если o — Some v.
val to_seq : 'a option -> 'a Seq.t
to_seq o — это o в виде последовательности. None — пустая последовательность, а Some v — последовательность из одного элемента, содержащая v.
Синтаксис
module Syntax: sig .. end
Операторы связывания.
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Option.html