In the L2R thread, I made a comment where I contrasted a for loop with a junction. On reflection, I think we could go further.
If we defined my $prev = 0; sub mangle($value) { $value + $prev; $prev=$value } and then used it as: my $x = any(1,2,3); $y = mangle($x); then the semantics of junctions are defined to fork 3 threads, to evaluate C<mangle> for each member of the junction in an arbitrary order. So there are now many possible values for $y. For example: any(2,5,6) if the order of evaluation is 2,3,1. Let us now imagine that C<for> is a junction operator, instead of a looping statement. Now we could write: my $x = for(1,2,3); my $y = mangle($x); and we can be certain that $y == (1,3,6), because a "for-junction" will distribute that evaluations sequentially. This ties in nicely with the pipeline syntax discussion, because for 1,2,3 ~> print; and for 1,2,3 -> { print }; would naturally behave correctly. But by defining a special type of sequentially distributed junction, we can do all sorts of clever (and therefore nasty) things. Dave. -- mailto:[EMAIL PROTECTED]; http://dave.whipp.name