sig type _ t = .. exception Unhandled : 'a Effect.t -> exn exception Continuation_already_resumed external perform : 'a Effect.t -> 'a = "%perform" module Deep : sig type ('a, 'b) continuation val continue : ('a, 'b) Effect.Deep.continuation -> 'a -> 'b val discontinue : ('a, 'b) Effect.Deep.continuation -> exn -> 'b val discontinue_with_backtrace : ('a, 'b) Effect.Deep.continuation -> exn -> Stdlib.Printexc.raw_backtrace -> 'b type ('a, 'b) handler = { retc : 'a -> 'b; exnc : exn -> 'b; effc : 'c. 'c Effect.t -> (('c, 'b) Effect.Deep.continuation -> 'b) option; } val match_with : ('c -> 'a) -> 'c -> ('a, 'b) Effect.Deep.handler -> 'b type 'a effect_handler = { effc : 'b. 'b Effect.t -> (('b, 'a) Effect.Deep.continuation -> 'a) option; } val try_with : ('b -> 'a) -> 'b -> 'a Effect.Deep.effect_handler -> 'a external get_callstack : ('a, 'b) Effect.Deep.continuation -> int -> Stdlib.Printexc.raw_backtrace = "caml_get_continuation_callstack" end module Shallow : sig type ('a, 'b) continuation val fiber : ('a -> 'b) -> ('a, 'b) Effect.Shallow.continuation type ('a, 'b) handler = { retc : 'a -> 'b; exnc : exn -> 'b; effc : 'c. 'c Effect.t -> (('c, 'a) Effect.Shallow.continuation -> 'b) option; } val continue_with : ('c, 'a) Effect.Shallow.continuation -> 'c -> ('a, 'b) Effect.Shallow.handler -> 'b val discontinue_with : ('c, 'a) Effect.Shallow.continuation -> exn -> ('a, 'b) Effect.Shallow.handler -> 'b val discontinue_with_backtrace : ('a, 'b) Effect.Shallow.continuation -> exn -> Stdlib.Printexc.raw_backtrace -> ('b, 'c) Effect.Shallow.handler -> 'c external get_callstack : ('a, 'b) Effect.Shallow.continuation -> int -> Stdlib.Printexc.raw_backtrace = "caml_get_continuation_callstack" end end