Luke Palmer writes: > I believe it could be programmed lazily. Like this: > > sub _outer_coro(*$first is context(Scalar), > [EMAIL PROTECTED] is context(Scalar)) > is coroutine > { > if @rest { > _outer_coro [EMAIL PROTECTED]; > } > else { > yield $first; > } > } > > sub outer([EMAIL PROTECTED] is context(Scalar)) > { > <_outer_coro([EMAIL PROTECTED])> > }
Which is of course wrong. sub _outer_coro(@prev, @data) is coroutine { if (@data) { _outer_coro([ @prev, @data[0] ], @data[1...]) } else { yield [EMAIL PROTECTED]; } } sub outer([EMAIL PROTECTED] is context(Scalar)) { <_outer_coro([], @data)> } Luke