X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=topics%2Fweek13_coroutines_exceptions_and_aborts.mdwn;h=a9d8bc2a66aa15614367850ecdae09021f4cd691;hp=f0ddc61dd9672eaf556f3e64aa295f7143a315da;hb=63c32fa4bcb81ad65d403cc42652efbed9e6517f;hpb=e36eaae1de25d2ba2b42afe2f77f51f6a2470a7b diff --git a/topics/week13_coroutines_exceptions_and_aborts.mdwn b/topics/week13_coroutines_exceptions_and_aborts.mdwn index f0ddc61d..a9d8bc2a 100644 --- a/topics/week13_coroutines_exceptions_and_aborts.mdwn +++ b/topics/week13_coroutines_exceptions_and_aborts.mdwn @@ -255,7 +255,7 @@ A more general way to think about these snapshots is to think of the code we're else abort 20 ) + 100 end - in (foo 2) + 1;; (* this line is new *) + in (foo 2) + 1000;; (* this line is new *) we can imagine a box: @@ -422,12 +422,10 @@ There are also different kinds of "syntactic sugar" we can use to hide the conti (shift k (if (eqv? x 1) (k 10) 20)) 100)))]) - (+ (foo 1) 1000)) - + (+ (foo 2) 1000)) -And in OCaml: -
+
+
 
 Various of the tools we've been introducing over the past weeks are inter-related. We saw coroutines implemented first with zippers; here we've talked in the abstract about their being implemented with continuations. Oleg says that "Zipper can be viewed as a delimited continuation reified as a data structure." Ken expresses the same idea in terms of a zipper being a "defunctionalized" continuation---that is, take something implemented as a function (a continuation) and implement the same thing as an inert data structure (a zipper).