This code works as expected:
(define saved #f)
(cons \'wo (call/cc (lambda (k) (set! saved k) \'())))
(saved \'ca!)
output (Racket console):
A continuation is all that's left to be done in the execution context where it's saved.
In the first case, the continuation is saved when calling cons
, so it's just to cons 'wo to something and return to the REPL.
In the second case, you call procedure test
, so the continuation is both
saved
(i.e. the continuation) with 'ca!so the continuation calls itself, hence the loop.