I think I already covered this in a previous klisp internals mail.
Continuations are implemented in klisp in the simplest way: by allocating frames in the heap instead
of a stack.
Continuation capturing just becomes pointer capturing. The price to pay for this is, of course, that frame
allocation is slower even in the case that continuations are not captured, because frames need to be
allocated from the heap and collected by the GC.
There are of course other alternatives to this.
As for transformating the input, you will find that it isn't as straightforward in Kernel as it is in scheme
for a number of reasons. One of course is that analyzing Kernel source code is harder
(because of first order operatives and environments) the other is that unlike in scheme, Kernel
continuations are not procedures (applicatives). A lot of work could be done in this are thou.
Regards,
Andres Navarro