>  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

Reply via email to