Spec-Zone.ru › OCaml

Модуль Result

module Result: sig .. end

Значения результатов.

Значения результатов обрабатывают результаты вычислений и ошибки явным и декларативным образом, не прибегая к исключениям.

  • С версии 4.08

Результаты

type ('a, 'e) t = ('a, 'e) result = 
| Ok of 'a
| Error of 'e

Тип для значений результатов. Либо значение Ok v, либо ошибка Error e.

val ok : 'a -> ('a, 'e) result

ok v — это Ok v.

val error : 'e -> ('a, 'e) result

error e — это Error e.

val value : ('a, 'e) result -> default:'a -> 'a

value r ~default — это v, если r — Ok v, и default в противном случае.

val get_ok : ('a, 'e) result -> 'a

get_ok r — это v, если r — Ok v, и иначе вызывает исключение.

  • Вызывает исключение Invalid_argument, если r — Error _.
val get_ok' : ('a, string) result -> 'a

get_ok' аналогичен Result.get_ok, но в случае ошибки использует сообщение об ошибке для вызова исключения Invalid_argument.

  • С версии 5.4
val get_error : ('a, 'e) result -> 'e

get_error r — это e, если r — Error e, и иначе вызывает исключение.

  • Вызывает исключение Invalid_argument, если r — Ok _.
val error_to_failure : ('a, string) result -> 'a

error_to_failure r — это v, если r — Ok v, и вызывает Failure e, если r — Error e.

  • С версии 5.4
val bind : ('a, 'e) result ->       ('a -> ('b, 'e) result) -> ('b, 'e) result

bind r f — это f v, если r — Ok v, и r, если r — Error _.

val join : (('a, 'e) result, 'e) result -> ('a, 'e) result

join rr — это r, если rr — Ok r, и rr, если rr — Error _.

val map : ('a -> 'b) -> ('a, 'e) result -> ('b, 'e) result

map f r — это Ok (f v), если r — Ok v, и r, если r — Error _.

val product : ('a, 'e) result ->       ('b, 'e) result -> ('a * 'b, 'e) result

product r0 r1 — это Ok (v0, v1), если r0 — Ok v0 и r1 — Ok v1, а в противном случае возвращает ошибку r0, если таковая имеется, или ошибку r1.

  • С версии 5.4
val map_error : ('e -> 'f) -> ('a, 'e) result -> ('a, 'f) result

map_error f r — это Error (f e), если r — Error e, и r, если r — Ok _.

val fold : ok:('a -> 'c) -> error:('e -> 'c) -> ('a, 'e) result -> 'c

fold ~ok ~error r — это ok v, если r — Ok v, и error e, если r — Error e.

val retract : ('a, 'a) result -> 'a

retract r — это v, если r — Ok v, или Error v.

  • С версии 5.4
val iter : ('a -> unit) -> ('a, 'e) result -> unit

iter f r — это f v, если r — Ok v, и () в противном случае.

val iter_error : ('e -> unit) -> ('a, 'e) result -> unit

iter_error f r — это f e, если r — Error e, и () в противном случае.

Предикаты и сравнения

val is_ok : ('a, 'e) result -> bool

is_ok r — это true тогда и только тогда, когда r — Ok _.

val is_error : ('a, 'e) result -> bool

is_error r — это true тогда и только тогда, когда r — Error _.

val equal : ok:('a -> 'a -> bool) ->       error:('e -> 'e -> bool) ->       ('a, 'e) result -> ('a, 'e) result -> bool

equal ~ok ~error r0 r1 проверяет равенство r0 и r1 с помощью ok и error, чтобы сравнить соответственно значения, обёрнутые в Ok _ и Error _.

val compare : ok:('a -> 'a -> int) ->       error:('e -> 'e -> int) ->       ('a, 'e) result -> ('a, 'e) result -> int

compare ~ok ~error r0 r1 задаёт полный порядок для r0 и r1 с помощью ok и error, чтобы сравнить соответственно значения, обёрнутые в Ok _  и Error _. Значения Ok _ меньше значений Error _.

Преобразование

val to_option : ('a, 'e) result -> 'a option

to_option r преобразуется r в option, отображая Ok v в Some v, а Error _ в None.

val to_list : ('a, 'e) result -> 'a list

to_list r — это [v], если r — Ok v, и [] в противном случае.

val to_seq : ('a, 'e) result -> 'a Seq.t

to_seq r преобразуется r в последовательность. Ok v — это последовательность из одного элемента, содержащая v, а Error _ — пустая последовательность.

Синтаксис

module Syntax: sig .. end

Операторы связывания.

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Result.html

Spec-Zone.ru

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