On 11/23/05, Flavio S. Glock <[EMAIL PROTECTED]> wrote:
> How about allowing reduce() to return a scalar with the same laziness
> as the list:
>
>     [EMAIL PROTECTED] - a lazy string if @list is lazy
>     [EMAIL PROTECTED] - a lazy number if @list is lazy
>
> It would look like:
>
>     $foo = substr( [~](1..Inf), 10 );
>     my $revfoo := reverse $foo;
>     $revfoo ~~ s/foo/bar/g;

That would violate the principle of least surprise. If all scalars
are, by default, eager, then:

    foo( [EMAIL PROTECTED] );
    foo( @list.join('') );

could potentially do different things, including possibly run out of
memory in some cases. Plus, what if the @list isn't lazy?

Better, I think, would be:

    say substr( ~(1..Inf) is lazy, 0, 10 );

Or, have substr()'s signature be:

sub substr( Str $str is rw is lazy, Int $start, Int $?end, Int $?replacement );

Rob

Reply via email to