On Mon, 2005-09-19 at 13:01 +0200, TSa wrote:
Why shouldn't there be a lvalue traversal that
in the end makes
($x, $y) = \($a, $b);
$x = \$a; $y = \$b;
Does this not go from one sequence point (evaluate the rhs sufficiently,
then perform the lvalue assignments) to multiple sequence points? I'm
not sure you can always reason effectively about the lack of side
I think you are right. I just used the two forms to illustrate my idea.
But since the default list is lazy while item evaluation is eager my
first case should probably be written as
**($x, $y) = \**($a,$b);
and even then might not give the interleaved execution sequence:
1: $x as lvalue
2: \$a as rvalue
3: $y as lvalue
4: \$b as rvalue
but 1,3,2,4. OTOH, it is the programmer's choice. The only thing that
he should be aware of is how much undeterminsm is in which alternative.
And I wonder if
[=] **zip( $x, $y ; \($a,$b) );
results in the 1,2,3,4 sequence deterministically.
$TSa.greeting := "HaloO"; # mind the echo!