sub operator:mat* is prec(\&operator:*) (@X, @Y) { return map { $^m1; # disambiguate ... right? reduce{[ @^a ^+ @^b ]} map { $X[$^m1][$^m2] ^* @{$Y[$^m2]} } 0 .. $#Y } } 0 .. $#X; }