open Cupto;; type 'a exn = 'a prompt;; let new_exn = new_prompt;; let raise p v = cupto p (fun _ -> v);; let handle p h a = let q = new_prompt() in set q (fun () -> h (set p (fun () -> let v = a() in cupto q (fun _ -> v)))) ;;