X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=topics%2Fweek13_native_continuation_operators.mdwn;h=179b7801fa8ba2508c57738053fc579c50af96bd;hp=8d64d2e650315a6161894ed576cebf3ae7f88024;hb=fef31f342d31c1fd1033f6aa023d2ed7b3fc47b0;hpb=61eb31f3b8a8495ffd02ece411ad1699fc3e31ef diff --git a/topics/week13_native_continuation_operators.mdwn b/topics/week13_native_continuation_operators.mdwn index 8d64d2e6..179b7801 100644 --- a/topics/week13_native_continuation_operators.mdwn +++ b/topics/week13_native_continuation_operators.mdwn @@ -105,7 +105,9 @@ However, OCaml doesn't have any continuation operators in its standard deploymen # #load "delimcc.cma";; # let reset_label = ref None;; # let reset body = let p = Delimcc.new_prompt () in - reset_label := Some p; let res = Delimcc.push_prompt p body in reset_label := None; res;; + let oldp = !reset_label in + reset_label := Some p; let res = Delimcc.push_prompt p body in + reset_label := oldp; res;; # let shift fun_k = match !reset_label with | None -> failwith "shift must be inside reset" | Some p -> Delimcc.shift p fun_k;;