> Per S09, we can write in Perl 6:
> my int @x;
> And the idea is that we get a packed array - conceptually, a single lump of
> memory allocated and and storing a bunch of ints contiguously. Contrast this
> my Int @x;
> Where we get an array of scalar containers, each of which is only allowed to
> contain an Int (strictly, something that Int.ACCEPTS(...) hands back true
> In the latter case, it's fairly clear how these differ:
> @x = 1;
> @x := 1;
> In the first, we look up the container in slot 0 or the array and assign a 1
> into it. In the second, we bind a 1 directly into the slot. There's no
> container any more (so any future assignment attempts will fail, for
> With packed arrays, however, I'm less clear what they mean. Since the point
> of a packed array is compact storage, there's no chance to actually have
> containers. Thus does assignment to a slot in a compact array ever make
> sense? There's not a container to look up and store things in.
> While I can happily convince myself that:
> @x := 1; # works, just sticks 1 into the appropriate location
> @x = 1; # dies, can't assign when there's no container
> Actually makes sense, I can also somewhat see users not liking it. So my
> questions are:
> 1) What semantics would users expect? Is it OK to say "no, you can't assign"
> in this case?
By this point in the email, you have me convinced that only binding
makes sense in the 'int'-with-a-lowercase-'i' case. So if you ask me,
it is OK to say "no, you can't assign" in this case.