Luke Palmer:
> Well... it is and isn't. At first sight, it makes the language look
> huge, the parser complex, a lot of syntax to master, etc. It also seems
> to me that there is little discrimination when adding new syntax.
Correct.
> But I've come to look at it another way. Perl 6 is doing something
> (many things, really) that no other language has done before: making it
> very easy to add new syntax to the language.
Well, that's hardly a new concept for a programming language.
> So modules that introduce new concepts into the language can add new
> syntax for them without working with (ugh) a source filter. And some of
> these new syntaxes in the "core" language will actually be in standard
> modules, if they're not commonly used. Just like traits.
This is good. This is what I like to hear. This is why the answer to
all these stupid syntax questions should be "Look, if you need it, just put it
in a module when we're done. But can we please get on with getting Perl 6
designed and out the door, now?"
But it isn't, and I don't know why it isn't, and so we end up spending loads
of time discussing things that can be punted out to modules. Designing Perl 6
is hard enough; let's not try to fill CP6AN at the same time.
> I'll also point out that FINISH isn't really extra syntax, just extra
> vocabulary.
It's extra special cases, which come to the same thing.
> > my $result = if ($a) { $a } else { $b };
>
> Ack! We have? It does make sense if we want to be able to implement
> C<if> as a regular sub... I guess. Yuck.
Yep, we did. Of course, the "nice" thing about it is that it allows
do_thing() if if ($a) { $b } else { $c };
> That's illegal anyway. Can't chain statement modifiers :-)
Bah, should be able to!
> But a close relative would be possible:
> push @moves: [$i, $j] unless for 0..6 { last if abs(@[EMAIL PROTECTED]) > 3 }
>
> Yeah, how about no. :-)
That's the thing, see. By saying no, we're saying "control structures like
'if' will be able to return a value, but control structures not like 'if'
won't", and that means we need to remove at least three words from 'When syntax
or semantics change, it will always be a change for the better: for greater
consistency, for more intuitability, for extra Do-What-I-Meanness.'... ;)
--
Resist the urge to start typing; thinking is a worthwhile alternative.
-- Kernighan and Pike