Spec-Zone.ru › OCaml 5.0

Модуль Effect.Deep

module Deep: sig .. end

Обработчики Deep

type ('a, 'b) continuation 

('a,'b) continuation — это ограниченное продолжение, которое ожидает значение 'a и возвращает значение 'b.

val continue : ('a, 'b) continuation -> 'a -> 'b

continue k x возобновляет продолжение k, передавая x в k.

  • Возбуждает Continuation_already_resumed если продолжение уже возобновлено.
val discontinue : ('a, 'b) continuation -> exn -> 'b

discontinue k e возобновляет продолжение k, возбуждая исключение e в k.

  • Возбуждает Continuation_already_resumed если продолжение уже возобновлено.
val discontinue_with_backtrace : ('a, 'b) continuation ->       exn -> Printexc.raw_backtrace -> 'b

discontinue_with_backtrace k e bt возобновляет продолжение k, возбуждая исключение e в k используя bt в качестве источника исключения.

  • Возбуждает Continuation_already_resumed если продолжение уже возобновлено.
type ('a, 'b) handler = {
retc : 'a -> 'b;
exnc : exn -> 'b;
effc : 'c. 'c Effect.t -> (('c, 'b) continuation -> 'b) option;
}

('a,'b) handler — это запись обработчика с тремя полями: retc — обработчик значения, exnc — обработчик исключений, и effc — обработчик эффектов, выполняемых вычислением, заключённым в обработчик.

val match_with : ('c -> 'a) -> 'c -> ('a, 'b) handler -> 'b

match_with f v h выполняет вычисление f v в обработчике h.

type 'a effect_handler = {
effc : 'b. 'b Effect.t -> (('b, 'a) continuation -> 'a) option;
}

'a effect_handler — это глубокий обработчик с идентичным обработчиком значений fun x -> x и обработчиком исключений, который возбуждает любое исключение fun e -> raise e.

val try_with : ('b -> 'a) -> 'b -> 'a effect_handler -> 'a

try_with f v h выполняет вычисление f v под обработчиком h.

val get_callstack : ('a, 'b) continuation -> int -> Printexc.raw_backtrace

get_callstack c n возвращает описание вершины стека вызовов в продолжении c, с максимальным количеством n записей.

© 1995-2022 INRIA.
https://v2.ocaml.org/releases/5.0/htmlman/libref/Effect.Deep.html

Spec-Zone.ru

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