type 'a prompt val shift : 'a prompt -> int -> (('b -> 'a) -> 'a) -> 'b val reset : 'a prompt -> int -> (unit -> 'a) -> 'a val eval : ('a prompt -> 'a) -> 'a (* eval a build hierachical shift-reset control operators and pass them as argument to a. Both shift and reset takes an interger as first argument which determines their level in the hierarchy. Weaker control operators are ignored by higher ones. The higher the interger, the weaker the control operator. This reset 0 .... reset 1 ... reset 2 ... shift 1 will capture the context up to reset 1. *)