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

Reply via email to