sub gen_idx_powerset (Int $size is copy) returns Array { my @c = ([]); for 0 .. $size-1 -> $i { push @c, (map { [@$_, $i] }, @c); } return @c; } #### sub gen_idx_powerset (Int $size is copy) returns Ref { my @c = ([]); return gather { take @c[0]; for 0 .. $size-1 -> $i { take for map { [@$_, $i] }, gathered; } }; }