# Re: Thunking semantics of :=

```Hi,

Autrijus Tang wrote:
>     my (\$x, @a);
>     \$x := @a[0];
>     @a := (\$x, \$x, \$x);
>     \$x := 1;
>     say @a; # (undef, undef, undef)```
```
hm, I'd expect @a to be (1, 1, 1) (WE = when evaluated):
my (\$x, @a);        # \$x is undef WE, @a is () WE
\$x := @a[0];        # \$x is undef WE, @a is () WE
@a := (\$x, \$x, \$x); # \$x is undef WE, @a is (undef, undef, undef) WE
# But those "undef"s are bound to @a[0] --
# @a := (@a[0], @a[0], @a[0]);
\$x := 1;            # \$x is 1 WE, @a[0] is 1 WE
say @a;             # (1, 1, 1)

And:
my (\$x, @a);        # \$x is undef WE, @a is () WE
\$x := @a[0];        # \$x is undef WE, @a is () WE
@a  = (\$x, \$x, \$x); # \$x is undef WE, @a is (undef, undef, undef) WE
# Those "undef"s are real undefs
\$x := 1;            # \$x is 1 WE, @a[0] is 1 WE
say @a;             # (1, undef, undef)

Opinions?

--Ingo

--
Linux, the choice of a GNU | To understand recursion, you must first
generation on a dual AMD   | understand recursion.
Athlon!                    |

```