Effect.Deep
SourceDeep handlers
('a,'b) continuation
is a delimited continuation that expects a 'a
value and returns a 'b
value.
continue k x
resumes the continuation k
by passing x
to k
.
discontinue k e
resumes the continuation k
by raising the exception e
in k
.
discontinue_with_backtrace k e bt
resumes the continuation k
by raising the exception e
in k
using bt
as the origin for the exception.
type ('a, 'b) handler = {
retc : 'a -> 'b;
exnc : exn -> 'b;
effc : 'c. 'c t -> (('c, 'b) continuation -> 'b) option;
}
('a,'b) handler
is a handler record with three fields -- retc
is the value handler, exnc
handles exceptions, and effc
handles the effects performed by the computation enclosed by the handler.
match_with f v h
runs the computation f v
in the handler h
.
'a effect_handler
is a deep handler with an identity value handler fun x -> x
and an exception handler that raises any exception fun e -> raise e
.
try_with f v h
runs the computation f v
under the handler h
.
get_callstack c n
returns a description of the top of the call stack on the continuation c
, with at most n
entries.