On Tue, 12 Nov 2002 14:30:24 +0000, Peter Haworth wrote:
> So to get the same yield context, each call to the coroutine has to be from
> the same calling frame. If you want to get several values from the same
> coroutine, but from different calling contexts, can you avoid the need to
> wrap it in a closure?

I'm an idiot. Why not make the closure a coroutine itself?

  sub consume(@bar){
    my $next=sub{ yielf $_ for @bar; return; };
    while my $val = $next() {
      do_stuff($val,$next);
    }
  }

>   sub do_stuff($val,$next){
>     ...
>     if $val ~~ something_or_other() {
>       my $quux = $next();
>       ...
>     }
>   }
> 

-- 
        Peter Haworth   [EMAIL PROTECTED]
"The term `Internet' has the meaning given that term in
 section 230(f)(1) of the Communications Act of 1934."
                -- H.R. 3028, Trademark Cyberpiracy Prevention Act

Reply via email to