callcc(fn)
      Callcc obtains its continuation and passes it to the function fn, which should accept one argument.
      The continuation itself is represented by a function. Each time this function is applied to zero or more values, it returns the
      values to the continuation of the callcc application. That is, when the continuation function is called, it returns
      its arguments as the values of the application of callcc.
If fn returns normally when passed the continuation function, the values returned by callcc are the values
      returned by fn.
Continuations allow the implementation of nonlocal exits, backtracking, coroutines, and multitasking.
The following example implements a simple coroutine mechanism where a function is allowed to "restart" another function from the point it was called:
let k = false
function a()
{ showln('a:1)
  showln(callcc(^(c) { k = c; b() }))
  showln('a:2) }
function b()
{ showln('b:1)
  k("hello from b") }
a()
//> a:1
    b:1
    hello from b
    a:2