At 10:24 PM +0100 7/8/02, Nicholas Clark wrote:
>On Mon, Jul 08, 2002 at 04:54:16PM -0400, Dan Sugalski wrote:
>>  Pretty simple. (For illustrative purposes) To do that with
>>  continuations, it'd look like:
>>
>>     $cont = take_continuation();
>>     if ($foo) {
>>       $foo--;
>>       invoke($cont);
>>     }
>>
>>  take_continuation() returns a continuation for the current point (or
>>  it could return one for the start of the next statement--either
>>  works), and invoke takes a continuation and invokes it. When you
>>  invoke a continuation you put the call scratchpads and lexical
>>  scratchpads back to the state they were when you took the
>>  continuation.
>
>So take_continuation is called once and returns 1 or more times?
>(1st return is just after you called it, second and later are for each time
>you invoke $cont from somewhere else)

Yes, Though we could certainly set it up so that $cont represented 
the state of the program immediately *after* the statement that 
created the continuation.

>and invoke is goto-on-steroids, and never returns? (except if $cont is duff,
>somewhat like the exec system call in Unix only returns on failure)

More or less, yes.

>And everything else is serene and swan-like?
>
>(ie the language gives the appearance of moving smoothly on the surface,
>but under water its feet are paddling furiously to implement motion)

I see you've peeked behind the curtain. :)
-- 
                                         Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[EMAIL PROTECTED]                         have teddy bears and even
                                       teddy bears get drunk

Reply via email to