It's still reading the block signature (parameters and return type) that it expects after the ->, until it sees the start of the block/closure.
Think of what follows it as a sub declaration without the sub name or parentheses. A semicolon there says that what follows are optional parameters, so it's expecting either a parameter name, or a type to give to the following parameter name. On Fri, Sep 14, 2018 at 4:16 PM ToddAndMargo <toddandma...@zoho.com> wrote: > On 09/14/2018 12:27 PM, ToddAndMargo wrote: > > Hi All, > > > > I use `->` all the time. What is its official name? > > > > for @x.kv -> $I, $Line {...} > > > > Many thanks, > > -T > > Me thinks I am pushing "pointy" here! > > #!/usr/bin/env perl6 > sub Stooges() { return ( "Larry", "Curley", "Moe" ); } > my $x; my $y; my $z; > > # ($x, $y, $z ) = Stooges; > Stooges -> $x, $y, $z; > say "$x $y $z"; > > > $ Lambda.Test.pl6 > ===SORRY!=== Error while compiling /home/linuxutil/./Lambda.Test.pl6 > Invalid typename 'say' in parameter declaration. > at /home/linuxutil/./Lambda.Test.pl6:10 > ------> say⏏ "$x $y $z"; > > > Am I missing something here, or did I just get a little > too creative for my own good? > > Many thanks, > -T > -- brandon s allbery kf8nh allber...@gmail.com