At Mon, 02 Aug 2010 21:54:54 +0900 (JST), Keiko Nakata wrote: > Actually, I didn't see. > > Why this code > > (let ([d (box #f)] [a (box 0)]) > (print (+ (begin (let/cc k (begin (set-box! d k) (set-box! a 2) 3))) (unbox > a))) > ((unbox d) 9)) > > prints 511111111, rather than 59999999?
I'm not sure I'm following. Can you say more about why you expect infinite "9"s instead of infinite "11"s? My reading is that a 2 gets installed into the box `a' once and for all, and then it's repeatedly added to 9. Nothing aborts the `let/cc' body before the `(set-box! a 2)' is evaluated. Also, the `+' is outside the `let/cc', so it is captured in the continuation along with `print'. In case it's a question of prompts: There is only one continuation prompt in the example, which is around the entire expression. In particular, the `begin' above doesn't introduce a continuation prompt. The prompt in your earlier example wasn't from `begin', but from the top level into which the `begin' forms were spliced. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users