X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=cps_and_continuation_operators.mdwn;h=aa2900c8b0012b553ff6e705ace9c6041b40892b;hp=bed466e16645c1988796bc57320bebdfe65ab75f;hb=333924dc64733882d990c740fba395ae87185ad8;hpb=9276f153f6bf9a6426e58fddce62288b6ca80b39 diff --git a/cps_and_continuation_operators.mdwn b/cps_and_continuation_operators.mdwn index bed466e1..aa2900c8 100644 --- a/cps_and_continuation_operators.mdwn +++ b/cps_and_continuation_operators.mdwn @@ -484,7 +484,7 @@ If instead at the end we did `... foo 1 + 1000`, we'd get the result `1110`. The above OCaml code won't work out of the box; you have to compile and install a special library that Oleg wrote. We discuss it on our [translation page](/translating_between_ocaml_scheme_and_haskell). If you can't get it working, then you can play around with `shift` and `reset` in Scheme instead. Or in the Continuation monad. Or using CPS transforms of your code, with the help of the lambda evaluator. -The relevant CPS transforms will be performed by these helper functions: +You can make the lambda evaluator perform the required CPS transforms with these helper functions: let reset = \body. \outk. outk (body (\i i)) in let shift = \k_body. \midk. (\k. (k_body k) (\i i)) (\a localk. localk (midk a)) in