[plt-scheme] call/cc and space
The recent mention of space safety made me revisit R5RS. Is my understanding
correct in that the following should use a bounded amount of memory?
(let loop () (call/cc (lambda (k) (loop))))
R5RS requires call/cc to apply it's argument in a tail position, and the call
to loop is in a tail position within that procedure. For the same reason, the
following should run in constant space (and does):
(let loop () (apply loop '()))
The callcc example grows in MzScheme, although not in Petite Chez. It also
doesn't seem to be an instance of this known problem:
(let loop ([x 0]) (call/cc loop))
The problem here being that although "x" isn't referenced in the body of the
loop, it's still captured by the continuation.
David