Not sure what you are asking here, but given your input, the result looks as expected.
A simplified example to illustrate:
my (@a, @b, @c); my @ab = @a, @b, @c; for @ab { say "{.^name} contained in a {.VAR.^name}"; }
which will output
Array contained in a Scalar
three times, regardless of the contents of @a , @b and @c .
Remember that in Perl6 there is no implicit smoothing, and the mutmility of an array (unrelated arrays) is realized by placing its elements in scalar containers.
Given the change in your question, perhaps the following code will again explain what happens:
Note that only lists and arrays can STORE (but not FETCH ), while scalars cannot.
This may come as a surprise: first, we could expect all assignees to provide STORE .
Looking at the implementation, we see that for variables with the sigil @ and % we make a STORE call , but not so for variables with the sigil $ . If we rode along the rabbit hole, we would end up specifying a VM-level container , that is, as assigning scalar containers (or calling the STORE object's Proxy method).
source share