module Deep:sig
..end
深度处理器
type ('a, 'b)
continuation
('a,'b) continuation
是一个分界延续(delimited continuation),它期望一个 'a
值并返回一个 'b
值。
val continue : ('a, 'b) continuation -> 'a -> 'b
continue k x
通过将 x
传递给 k
来恢复延续 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
中使用 bt
作为异常的来源引发异常 e
来恢复延续 k
。
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
在处理器 h
中运行计算 f v
。
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
在处理器 h
下运行计算 f v
。
val get_callstack : ('a, 'b) continuation -> int -> Printexc.raw_backtrace
get_callstack c n
返回延续 c
上调用栈顶部的描述,最多包含 n
个条目。