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

Re: So, what the heck is a continuation anyway?

At 07:40 PM 12/10/2001 +0000, Seth Gordon wrote:
>    From: Dan Sugalski <dan@sidhe.org>
>    Oh, I see. A continuation is a function call where, not only do you 
> get to
>    decide what you return, you get to decide where you return it to.
>    That's evil. I really like it. :)
>    Are there general rules as to where you're allowed to return to? I 
> presume
>    picking PC addresses out of the air's considered bad form.
>In Scheme, the "call-with-current-continuation" form basically allows
>you to say, "I want other functions to be able to return their values
>*here* instead of to their callers", and then you can refer to
>"*here*" with the variable name of your choice, and then pass that
>variable to other functions.

Does *here* always have to be above the routine actually returning to the 
continuation? For example, if I have code flow that looks like:

              / \
             A   B

where my code runs from top to A back to top and then to B, can I get a 
continuation object/marker from within A and pass it to B, which then 
triggers it and returns to A even though I've unwound the stack frames for A?

>The bad form comes when you start doing things like using the same
>continuation more than once.

Yeah, but the bad forms tend to be the most interesting. :)


--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan@sidhe.org                         have teddy bears and even
                                      teddy bears get drunk