OCaml library : Effect.Shallow

# Module Effect.Shallow

    module Shallow: sig .. end

    type ('a, 'b) continuation

`('a,'b) continuation` is a delimited continuation that expects a `'a` value and returns a `'b` value.

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

`fiber f` constructs a continuation that runs the computation `f`.

    type ('a, 'b) handler = {

`` | `retc : `'a -> 'b`;`
`` | `exnc : `exn -> 'b`;`
`` | `effc : `'c. 'c Effect.t -> (('c, 'a) 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.

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

`continue_with k v h` resumes the continuation `k` with value `v` with the handler `h`.

- Raises `Continuation_already_resumed` if the continuation has already been resumed.

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

`discontinue_with k e h` resumes the continuation `k` by raising the exception `e` with the handler `h`.

- Raises `Continuation_already_resumed` if the continuation has already been resumed.

    val discontinue_with_backtrace : ('a, 'b) continuation ->
           exn -> Printexc.raw_backtrace -> ('b, 'c) handler -> 'c

`discontinue_with k e bt h` resumes the continuation `k` by raising the exception `e` with the handler `h` using the raw backtrace `bt` as the origin of the exception.

- Raises `Continuation_already_resumed` if the continuation has already been resumed.

    val get_callstack : ('a, 'b) continuation -> int -> Printexc.raw_backtrace

`get_callstack c n` returns a description of the top of the call stack on the continuation `c`, with at most `n` entries.