Spec-Zone.ru › OCaml

Модуль Результат

module Result: sig .. end

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

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

  • Since 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 и поднимает исключение в противном случае.

  • Raises Invalid_argument если r является Error _.
val get_error : ('a, 'e) result -> 'e

get_error r является e если r является Error e и поднимает исключение в противном случае.

  • Raises Invalid_argument если r является Ok _.
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 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 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 в качестве опции, сопоставляющей 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 _ — это пустая последовательность.

© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/Result.html

Spec-Zone.ru

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