At 2:05 PM +0900 8/7/03, Ben Giddings wrote:
>Hi Jim,
>
>Lots of good stuff in there.  I found one of the most useful pages was:
>
>http://www.sidhe.org/~dan/blog/archives/000213.html
>
>Where he says:
>
>"Well, if you remember with CPS, when you call a function you pass 
>in a continuation that represents the place you're going to return 
>to when you're done. In the normal case, a continuation is taken 
>immediately before the call (with a resume address for the code 
>right after the call, otherwise you'd call over and over and 
>over...) and passed into the function you're calling"
>
>Which is just what Ruby is doing... however most of the practical 
>uses of continuations I've seen don't follow this rule well, they 
>don't use "callcc" as a means of jumping out of the associated 
>block, instead they store the continuation in another variable 
>outside the block, leave the block, then use it somewhere else.
>
>It looks like what he's talking about is better implemented with 
>throw/catch in Ruby.

It's important to note that the stuff referenced in the above link, 
as well as most of the tech stuff on my blog, should be taken in the 
context of implementing things. Generally, though not universally, 
for Parrot. CPS, especially as an implementation scheme, is a very 
particular use of continuations, and it's probably not a good idea to 
draw too many general conclusions from it.
-- 
                                         Dan

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