[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CPS != call/cc




On Wednesday, August 6, 2003, at 11:00  AM, Peter J. Wasilko, Esq. 
wrote:

>> Well... it can sort of help, but there are some limits. Multiple
>> stacks tend to solve other problems, and they're certainly useful,
>> but for a CPS scheme you really need more of a linked frame system
>> than a stack system, since the control information really builds up a
>> tree (albeit one often with a single branch) rather than a stack.
>
> Dan,
>
>     I see, so what would an optimal hardware architecture be for
> supporting CPS?

CPS, or continuation-passing-style, is not the same thing as a language 
that includes primitives for continuations.

EXAMPLE:

this program is in CPS (w.r.t. user-defined procedures):

(define (fact-cps n k)
   (if (= n 0)
     (k 1)
     (fact-cps (- n 1) (lambda (x) (* x n)))))


Look!  No call/cc, no stack-copying.  Just procedures that happen to 
represent continuations.

CPS is called a 'style' because it's just that... a style of 
programming. A program is in continuation-passing style if all of its 
calls are tail calls.

john clements