Luke Palmer writes: > > for parallel(<>, 0..Inf) -> $line, $count { > FIRST { $line //= "#!/usr/bin/perl" } > # processing... > NEXT { print STDERR "Next line...\n" } > LAST { print STDERR "Done\n" } > } > .... > > Also, keep in mind that that C<parallel> function can be any (possibly > user-defined) function. I really like that interface. Also keep in > mind that that may not be The Interface :( i.e. still under debate ). >
is parallel ( or whatever I pu there ) *always* a lazy function or it returns a lazy list . I dont exactly see the differnce in case of parallel(<>, 0..Inf) . but in more "earthly" example @a = (1,2,3); @b = qw( a b c ) ; for parallel(@a,@b) { $^x mumble $^y } will parallel *first* evaluate to ( 1 , "a" , 2, "b" , ... "c" ) and then for "walk" it over -- or parallel lazyli "yeld" one value at a time when for request . what I am concerned with here is : will for - parallel pair be smart enough to optimize away unnecessary ( and CPU - costly ) reshuffling of @a,@b -> (@a[0], @b[0], @a[1], @b[1], ... ) . or , actually I am talking about imaginary problem and this reshuffling happens in zero time. ( But *I* always can write parallel-like function that will do it *very* inefficiently . so what happens in this case ) since I feel that I am not *very* clear , just one question : what is faster ( in perl6 ) ? for parallel(@a,@b) { mumble $^x, $^y } # assuming parallel stop when # one of the arrays is exhosted or my $i=0; my $x,$y; loop { $x = @a[$i ] or last loop $y = @a[$i++] or last loop mumble $x , $y ; } arcadi