Austin Hastings writes:
>
>
> > -----Original Message-----
> > From: Adam Turoff [mailto:[EMAIL PROTECTED]
> > On Tue, Nov 25, 2003 at 01:03:19PM +1100, Damian Conway wrote:
> > > Schwern observed:
>
> > > Perhaps this is yet another argument for insisting on:
> > >
> > > while do {$n++; $foo > $bar}
> > >
> > > instead.
> >
> > That looks like syntactic sugar for
> >
> > while (do) {$n++; $foo > $bar}
> >
> > and could be interpreted as either:
> >
> > while "do" {...} ## perl5 bareword
> > while do() {...}
> >
> > Luke's "then" feels like the best fit on the one hand, and the worst fit
> > on the other. Everything else feels worse, though.
>
> Hmm. Why not just explicitly allow semicolon when surrounded by parens?
>
> while ($n++; $foo > $bar) {...}
Well, because the intent of the original proposal was to "fatten up" the
C comma to make it explicit, easy to see, and clearly unambiguous. A
semicolon does none of these things. It also, as you mention, prevents
the compiler from catching a rather common syntax error.
But other than that, uh, sure. Providing we spell parens C< do{} >. :-)
> Removing the parens changes the results, which is just what you'd expect
> mathematically.
>
> $f = (0, 1, 2, $n++, $foo > $bar); # List
>
> $f = (0; 1; 2; $n++; $foo > $bar); # Sequence of statements, three
> useless.
>
> "C" style C<for> loops then look like:
>
> for (($a = 0; $b = $num_elts); $a < @arry; ($a++; $b -= $offset)) {...}
By which you mean
loop ($a = 0; $b = $num_elts); $a < @arry; ($a++; $b -= $offset)
{...}
right?
Perhaps my favorite syntactic thing Perl 6 has done so far is gotten rid
of those dastardly parens on control constructs! Yay!
Luke
>
> Which is on the one hand yucky, but on the other hand very explicit.
>
> (I suppose I could propose using semicolon for the list separator, but that
> would drive the syntax-highlighters insane, and I like syntax-highlighting.)
>
> =Austin
>
> PS: An immediate drawback that occurs to me is that of catching unbalanced
> parens -- when the statement terminator is a valid sequence delimiter, all
> the rest of the code looks like a sequence. But the first nesting closing
> brace would probably catch that.
>