A great way to think about the "current continuation" is as a function which, if called, would execute the rest of the program. For example, in a program like this:

  1. x = 7
  2. print(x)
  3. y = 13

between line 2 and line 3 the current continuation is a function which assigns 13 to y.

So, when "print" is called on line 2, it's passed somewhere to come back to when it's done. And that "somewhere" is the current continuation just after the print. Simple, eh? The clever bit is to treat the current continuation as a function just like any other.

Now it's easy to understand call/cc. Take a look at this program:

  1. x = 7
  2. call/cc(g)
  3. y = 13

All that's happening is that the function g get passed the continuation as a parameter. If it calls it, the rest of the program runs from just after the call/cc. Just as if it had "returned".