[This might be better suited to p6c if it turns out that this is a
bug, but I'll assume it's not to start...]

So, last night sorear said, "I might write the loop as for 2 .. $lim X
2 .. $lim -> $a, $b {"

I played around with this a bit, and I'm unclear on how this works.
Here's some examples that I tried:

# parens on the arglist causes flattening?
$ ../rakudo/perl6 -e 'for 1 .. 2 X 4 .. 5 -> ($a, $b) { say $a.perl, $b.perl }'
Not enough positional parameters passed; got 0 but expected 2 in sub-signature
  in <anon> at line 1
  in main program body at line 1
# Lack of parens gives lol context?
$ ../rakudo/perl6 -e 'for 1 .. 2 X 4 .. 5 -> $a, $b { say $a.perl, $b.perl }'
14
15
24
25
# Default context is flat?
$ ../rakudo/perl6 -e 'for 1 .. 2 X 4 .. 5 { say .perl }'
1
4
1
5
2
4
2
5
# lol just not implemented in rakudo, or am I doing it wrong?
$ ../rakudo/perl6 -e 'for lol 1 .. 2 X 4 .. 5 { say .perl }'
Could not find sub &lol
  in main program body at line 1
# capture flattens? that seems really non-intuitive
$ ../rakudo/perl6 -e 'for |(1 .. 2 X 4 .. 5) { say .perl }'
\(1, 4, 1, 5, 2, 4, 2, 5)
# hyper-. flattens?
$ ../rakudo/perl6 -e '(1 .. 2 X 4 .. 5)>>.join(",").say'
14152425

Can someone explain why these all behave so differently, and why we
chose to flatten so aggressively in so many cases, but not in some
others?

-- 
Aaron Sherman <a...@ajs.com>
P: 617-440-4332 Google Talk: a...@ajs.com / aaronjsher...@gmail.com
"Toolsmith" and developer. Player of games. Buyer of gadgets.

Reply via email to