(* Emulating the polymorphic shift/reset using multiple prompts and unsafe unions This code is NOT suitable for production. It is only used in the expository code to get the prompts out of the way and pretend that we have ordinary shift/reset with effect typing. Our fully developed lifting library does NOT use this code. We use Delimcc (multi-prompt delimited continuations), which are safe. *) val reset : (unit -> 'r) -> 'r val shift : (('a -> 'r) -> 'r) -> 'a