4 ms·
It's not just one argument! I't consumes as many arguments as you like, there is also the HYPER WHATEVER which is two asterisc in a row * * (without white space
by Ultimatt 12y ago
It's not just one argument! I't consumes as many arguments as you like, there is also the HYPER WHATEVER which is two asterisc in a row * * (without white space a limitation of HN!) which is a dimensioned form of whatever for dealing with higher dimension data structures.
The following are identical with and without whatever:
perl6> "ACAGATAAATTA".comb.map: * ~ * ~ * ;
ACA GAT AAA TTA
perl6> "ACAGATAAATTA".comb.map({$^first ~ $^second ~ $^third});
ACA GAT AAA TTA
It's worth pointing out we're lucky that 'first' is lexically before 'second' in the second one though. The $^ consumes parameters in the lexical order of the variable names. So it's used normally for $^a $^b in sorting. So .sort({$^a cmp $^b}) versus .sort({$^b cmp $^a}). But a general feature was made rather than an obscure exception. In general Perl6 is very consistent. It might also just be a bit too crazy at times, some of the stuff you can do like the (* * *)(2,3) below you obviously would just not do in real life.
So an example where the lexical ordering is kind of neat:
perl6> "ACAGATAAATTA".comb.map({$^third ~ $^second ~ $^first});
ACA TAG AAA ATT
Contrived since you could just split the string by three characters and flip it :P But hopefully you get the idea!