According to Damian:
>
> Colin exemplifies:
>
> > $a = 1;
> > @a = (1);
> > @b = (1, 2, 3);
> > @c = (4, 5, 6);
> >
> > $a = $a ^+ @b;
> > @a = @a ^+ @b;
> >
> > print $a; # 7
>
> No. It will (probably) print: 4. Because:
>
>
> > print @a; # 7 or 2?
>
> Prints: 2 2 3. Because:
> $a = ($a,$a,$a) ^+ @b;
> $a = (1,1,1) ^+ (1,2,3);
> $a = (2,3,4);
> $a = 4;
and
> > print @a;
> @a = @a ^+ @b;
> @a = (1,undef,undef) ^+ (1,2,3); # or (1,0,0) ^+ (1,2,3)
> @a = (2,2,3);
prints 2 2 3
So, does that mean:
$a = ($a) ^+ @b;
print $a; # prints: 3
# $a = ($a,undef,undef) ^+ @b ...
My new confusion has to do with why does the hyperoperator expand $a to
($a,$a,$a), but (1) to (1,undef,undef)? Oh, it's because hyper-ops
expand an arg if it is short on *dimensions* and not *elements*.
(1) gets expanded to (1,undef,undef) by auto-vivification of list
elements, and not by action of the hyper-op, correct?
Trying to get the hang of parallelisms,
-C.