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