HaloO,
Carl Mäsak wrote:
But what if I don't care about the elements 1,4,7? Would the following
be a sane syntax?
my @a = 1..9;
for @a -> undef, $x, $y { say $x }
I think that, if the concept of lazy list evaluation is running
deep in Perl 6 than the obvious solution to me is:
for @a -> $x, $y, $z { say $y }
and $x and $z are never evaluated. Other ways that come to my mind
are:
for @a -> $,$y,$ { say $y }
for @a -> (,$y,) { say $y }
for @a -> ,$y, { say $y } # same? unparseable?
All the above depend on really lazy lists that somehow hook onto
what they are susposed to contain in a very lightweight, shallow
fashion. And it must be possible to iterate lists in several
modes. Here this would be (:skip,:fetch,:skip) or whatever the
syntax could be.
Or in a non-native-attempt-to-sound-funny-with-deep-philosophical-meaning
way I would say: "If Carl doesn't want to care about the first and last
item of the three element list, he should do so! And Perl6 cares for his
carelessness not beeing punished with a performance penalty." :)
Here's a lengthy version that also comes to my mind:
for @a -> @three is shape(Void,Item,Void) { say @three[1] }
if this is not how the shape trait works s/shape/tuple/.
Actually, it could as well just be @three:(Void,Item,Void).
Hmm, or with typing the topic:
for @a -> $_:(Void,Item,Void) { say }
--
$TSa.greeting := "HaloO"; # mind the echo!