Reading through the examples left me wondering about some technicalities: > @t[|i;|j] = @a[|j;|i]; # transpose 2-d @a Written like this it would require that @a is exact 2-dim, i.e. it would not just swap the first two dims of any n-dim array? I suppose if I'd want that I'd write @t[|i;|j;] = @a[|j;|i;]; # trailing ';' implies there might be trailing dims > #compute pairwise sum, pairwise product, pairwise difference... > @sum = @a[|i;|j;|k;|l] + @b[|i;|j;|k;|l]; > @prod= @a[|i;|j;|k;|l] * @b[|i;|j;|k;|l]; > @diff= @a[|i;|j;|k;|l] - @b[|i;|j;|k;|l]; Hm, not sure if I am missing the point of these examples. Is that any different from the elementwise '+','*','-' apart from being possibly limited to 4D arrays? > #print lots of stuff to the screen. > sub foo { print join(',',@_),"\n"; return 0; } > $zero[|i;|j;|k;|l;|m;|n;|o;|p] = foo(|i,|j,|k,|l,|m,|n,|o,|p); Should that be '$zero' or '@zero'? > > # Sneaky way to generate dot-product: > my $dotproduct; > { my @temp[|i] = $dotproduct += $a[|i] * $b[|i]; } Hm, how can this work with lazy evaluation? How is Perl supposed to know that @temp should be transiently created to increment $dotproduct as a side effect? Also, doesn't the above syntax seem to be conflicting with perl context rules since it essentially contains a statement @arr = $scalar ChristianThread Previous | Thread Next