> As
> for general continuations, I can't remember when I've last used
> co-routines... college?
>
> It seems that the Python people have figured a simple way to
> implement generators. That said... I'd hate to have a generator
> request promoted into a continuation request and then get dumped
> beacuse it is too complicated. ;)
>
> Best,
>
>
Hi,
I wanted to point out that ruby which is one of parrot's target if I
understand everything correctly support continuations,
here is a short extract of the programming ruby book pertaining to it:
<quote>
class Continuation Parent: Object
Version: 1.6
Index:
call
----------------------------------------------------------------------------
----
Continuation objects are generated by Kernel#callcc . They hold a return
address and execution context, allowing a nonlocal return to the end of the
callcc block from anywhere within a program. Continuations are somewhat
analogous to a structured version of C's setjmp/longjmp (although they
contain more state, so you might consider them closer to threads).
For instance:
arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
callcc{|$cc|}
puts(message = arr.shift)
$cc.call unless message =~ /Max/
produces: Freddie
Herbie
Ron
Max
This (somewhat contrived) example allows the inner loop to abandon
processing early:
callcc {|cont|
for i in 0..4
print "\n#{i}: "
for j in i*5...(i+1)*5
cont.call() if j == 17
printf "%3d", j
end
end
}
print "\n"
produces:
0: 0 1 2 3 4
1: 5 6 7 8 9
2: 10 11 12 13 14
3: 15 16
</quote>
so having support for continuation within parrot would really be more than
nice, it would be needed in order to correctly implement ruby on top of it.
Benoit