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