module Cc:sig..end
type 'a m
type 'a prompt
val return : 'a -> 'a mreturn a_valueval bind : 'a m -> ('a -> 'b m) -> 'b mbind cc_monad fval run : 'a m -> 'aval new_prompt : unit -> 'a prompt mnew_prompt ()
Create a new prompt that corresponds to the value of the type
'a
val pushP : 'a prompt -> 'a m -> 'a mpushP prompt m
Push the prompt and execute the computation m
val shiftP : 'a prompt -> (('b m -> 'a m) -> 'a m) -> 'b mshiftP prompt f
Capture the delimited continuation up to the dynamically closest
occurrence of prompt, remove that continuation and execute f
c, where c is the reified captured continuation enclosed in its
own prompt.