sig
type 'a m
type 'a prompt
val return : 'a -> 'a Cc.m
val bind : 'a Cc.m -> ('a -> 'b Cc.m) -> 'b Cc.m
val run : 'a Cc.m -> 'a
val new_prompt : unit -> 'a Cc.prompt Cc.m
val pushP : 'a Cc.prompt -> 'a Cc.m -> 'a Cc.m
val shiftP : 'a Cc.prompt -> (('b Cc.m -> 'a Cc.m) -> 'a Cc.m) -> 'b Cc.m
end