Hi, Luke Palmer wrote: > On 11/21/05, Ingo Blechschmidt <[EMAIL PROTECTED]> wrote: >> Hm. How is (*@;AoA) different from (Array [EMAIL PROTECTED]) then? (Assuming >> that >> foo(@a; @b) desugars to foo([EMAIL PROTECTED], [EMAIL PROTECTED]).) > > Well, it's not at all, under that assumption. But that assumption is > wrong.
Aha! FYI, I got that interpretation from r6628 of S09 [1]: > The following two constructs are structurally indistinguishable: > > (0..10; 1,2,4; 3) > ([0..10], [1,2,3,4], [3]) > I think foo(@a; @b) doesn't have a sugar-free form (that is to > say, it is the sugar-free form). Among things that desugar to it: > > @a ==> foo() <== @b > foo(@a) <== @b > @a ==> @b ==> foo() # maybe; don't remember > > To illustrate: > > sub foo ([EMAIL PROTECTED]) { > say [EMAIL PROTECTED]; > } > sub bar (*@;a) { > say +@;a; > } > foo(1,2,3; 4,5,6); # 6 > bar(1,2,3; 4,5,6); # 2 > > That is, the regular [EMAIL PROTECTED] has "concat" semantics. However, I'd > like to > argue that it should have "die" semantics, for obvious reasons. Just to clarify -- only ";" with "*@;a" should have "die" semantics, "," with "*@;a" should continue to work, right? (If so, I agree.) Could you provide some more examples with ;, please? In particular, what are the results of the following expressions? (42; 23) (@a; @b) (@a; @b)[0] (@a; @b)[0][0] ((42;23); (17;19)) ((@a;@b); (@c;@d)) *(42; 23) *(@a; @b) ( (42; 23), 19) (*(42; 23), 19) [42; 23] [EMAIL PROTECTED]; @b] Thanks very much, --Ingo [1] http://svn.perl.org/perl6/doc/trunk/design/syn/S09.pod /The semicolon operator