Luke Palmer <[EMAIL PROTECTED]> writes: > This is for everyone: <<EOA4 > > In Perl, this problem comes up most often when people say "Why do I > have to put a semicolon after do {} or eval {} when it looks like a > complete statement?" > > Well, in Perl 6, you don't, if the final curly is on a line by itself. > That is, if you use an expression block as if it were a statement > block, it behaves as one. The win is that these rules are consistent > across all expression blocks, whether user-defined or built-in. Any > expression block construct can be treated as either a statement or a > component of an expression. Here's a block that is being treated as a > term in an expression: > $x = do { > ... > } + 1; > > However, if you write > $x = do { > ... > } > + 1; > then the + will be taken erroneously as the start of a new statement. > (So don't do that.) > > Note that this special rule only applies to constructs that take a > block (that is, a closure) as their last (or only) argument. Operators > like sort and map are unaffected. However, certain constructs that > used to be in the statement class may become expression constructs in > Perl 6. For instance, if we change BEGIN to an expression construct we > can now use a BEGIN block inside an expression to force compile-time > evaluation of a non-static expression: > $value = BEGIN { call_me_once() } + call_me_again(); > > On the other hand, a one-line BEGIN would then have to have a > semicolon. > > EOA4 > > To me, this looks like it has answers to all these questions.
Up to a point. Look at the discussion of given/when in the same Apocalypse. Here's some example code from A4: given $! { when Error::Overflow { ... } when Error::Type { ... } when Error::ENOTTY { ... } when /divide by 0/ { ... } ... } Look, closing braces, ending statements, not on a line by themselves. There's code like this all through the apocalypse and its associated Exegesis, so it looks to me like C<< rx/\} \s* \n/ >> is the regex for 'end of statement'. Either that or we're back with a pile of special cases, which I thought the Apocalypse was supposed to be eliminating. -- Piers "It is a truth universally acknowledged that a language in possession of a rich syntax must be in need of a rewrite." -- Jane Austen?