Is there a cute Perl 6 way to take an array (say
‘a’..‘d’
) and get all head/tail partitions of it (e.g.(<a>, <b c d>), (<a b>, <c d>), (<a b c>, <d>))
?
Sure! Pick one:
my @a = ‘a’..‘e’; say (@a[^$_, $_..*] for 1..^@a);
my @b = ‘a’..‘e’; say (1..^@b).map: {@b[^$_, $_..*]};
my @c = ‘a’..‘e’; say (@c.rotor($_, ∞, :partial) for 1..^@c);
my @z = ‘a’..‘e’; say @z[0..*-2].keys.map: {@z[0..$_, $_^..*]}; # same as b
my @d = ‘a’..‘e’; say (1..^@d).map: {@d.rotor: $_, ∞, :partial};