Модуль 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 :
| |
exnc :
| |
effc :
|
} ('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 :
|
} '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-2024 INRIA.
https://ocaml.org/manual/5.2/api/Effect.Deep.html