Spec-Zone.ru › OCaml

Модуль Option

module Option: sig .. end

Значения типа option.

Значения типа option явно указывают на наличие или отсутствие значения.

  • Начиная с версии 4.08

Варианты

type 'a t = 'a option = 
| None
| Some of 'a

Тип для значений типа 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
    v1
, и None в противном случае.

  • Начиная с версии 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API