On Sat, Jun 13, 2009 at 02:49:10PM -0500, John M. Dlugosz wrote:
> Wow. The overarching logic for list assignment would have to compare
> the containers and the arguments in the capture before doing the list
> assignment to each container, in order to avoid cloning all the
> containers on the right first in the general case. It can't just copy
> values out because they may contain iterators or be lazy or be infinite.
Well, that's not really a problem, as long as the same semantics
are preserved. All you need to do is cut loose the contents of the
container completely to the mercy of GC, build a new one with the
appropriate structure, then copy values in from the assignment's RHS.
The only reason Perl 5 couldn't do it this way is that the idiot who
wrote it prematurely optimized values on the stack so that they didn't
need to be reference counted. :)