Continuation in Scheme

continuations, scheme

Solution

The continuation is the "rest of the computation" that remains to be executed. In your particular example, you could think of this as being `(display [])` where `[]` is a hole to be plugged with a value. That is, at the point that `call/cc` is invoked, what remains to be done is the call to display.

What `call/cc` does is take this continuation and puts it in a special value that can be applied like a function. It passes this value to its argument (here `f`). In `f`, the continuation is bound to `return`. So `(return 2)` will basically plug `2` into the continuation, i.e., `(display 2)`.

I don't think this example is actually very helpful, so I think you should read PLAI if you're interested in learning more about continuations (see Part VII). Another good source is these lecture notes by Dan Friedman.

Problem

I think I got what a continuations is (in general), but I can't understand how it is used in Scheme. Consider this example (from wikipedia call/cc) ``` (define (f return) (return 2) 3) (display (call/cc f)) ;=> 2 ``` I cannot understand why: the continuation is implicit?right? How is the continuation in this case?

Original source