Spec-Zone.ru › OCaml

Модуль Effect.Shallow

module Shallow: sig .. end
type ('a, 'b) continuation 

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

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

fiber f создаёт цепочку продолжения, которая выполняет вычисление f.

type ('a, 'b) handler = {
retc : 'a -> 'b;
exnc : exn -> 'b;
effc : 'c. 'c Effect.t -> (('c, 'a) continuation -> 'b) option;
}

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

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

continue_with k v h возобновляет цепочку продолжения k со значением v с обработчиком h.

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

discontinue_with k e h возобновляет цепочку продолжения k путём возбуждения исключения e с обработчиком h.

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

discontinue_with k e bt h возобновляет цепочку продолжения k путём возбуждения исключения e с обработчиком h используя исходный стек вызовов bt в качестве источника исключения.

  • Возбуждает Continuation_already_resumed если цепочка продолжения уже возобновлена.
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.Shallow.html

Spec-Zone.ru

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