type 'a prompt val shift : 'a prompt -> (('b -> 'a) -> 'a) -> 'b val reset : 'a prompt -> (unit -> 'a) -> 'a val new_prompt : unit -> 'a prompt