On Sat Oct 31 14:12:36 2015, sml...@gmail.com wrote: > S07 [https://github.com/perl6/specs/blob/master/S07-lists.pod] claims: > > "The single argument rule does respect Scalar containers." > "The single argument rule is implemented consistently throughout the > language." > > It lists 'for', '.push', 'infix:<,>' and 'postcircumfix:<[ ]>' as > examples of > things that consistently follow the rule. > > Since it does not explicitly mention the X and Z meta-operators as > exceptions, > it stands to reason that they too should follow this rule. > > But in current Rakudo they only follow it partially: They treat each > operand as > a single argument whose elements to act on, but they do *not* respect > Scalar-containerization of said arguments. > > Example: > > say $(1, 2) X <a b c> > > Output: > > ((1 a) (1 b) (1 c) (2 a) (2 b) (2 c)) > > Expected output: > > (((1 2) a) ((1 2) b) ((1 2) c)) > > > TL;DR: This is either a Rakudo bug, or a case where S07 needs more > clarification.
Rakudo bug, and fixed now. Also roundrobin was vulnerable to a similar problem, and has also been fixed. Tests in S03-metaops/cross.t, S03-metaops/zip.t, and S32-container/roundrobin.t.