Front page | perl.perl6.language |
Postings from March 2003
Statement modifiers
Thread Next
From:
Matthijs van Duin
Date:
March 10, 2003 02:04
Subject:
Statement modifiers
Message ID:
20030310095221.GC18286@cds.nl
Hi all, just dropping in with some thoughts I had while reading the
archive of this list. I've tried to search the list but it's difficult
with perl keywords being common english words and google unable to search
for punctuation; if the stuff below has already been fully resolved, I'd
appreciate some pointers to the corresponding messages. :-)
Anyway, let me start by adding to the statistics: I very much like
method <~ $obj and $arg ~> sub and I like support of Unicode aliases
for operators as long as plain ascii versions remain available too.
Now the real subject.. has the issue of multiple statement modifiers
already been settled? I saw some mention it wasn't going to be supported,
but also mentions of how it would be useful; I can think of such a
situation myself:
.method when MyClass given $obj;
as alternative to:
$obj.method if $obj.isa(MyClass);
except without duplicating $obj, which may be worthwhile if it's a longer
expression. If multiple modifiers are really a no-no, then I think at
least the conditionals (if, unless, when) could be made lowest-precedence
right-associative infix operators, and leave the status of "statement
modifier" for loops and topicalizers.
This would mean that the above would be valid, and also things like:
.. if .. if .. for ..; But that multiple nested loops would be illegal
using modifiers and would require a real block. (which makes some sense,
since it's hard to think of a construction where multiple loop-modifiers
would be useful: if you have ... for @a for @b then you'd be unable to
use the @b-element since $_ would be the loop var of the inner loop)
I also think this gives a nice symmetry of various operators that only
differ in L2R/R2L and precedence (plus the ability to overload ofcourse):
$x and $y $y if $x
$x or $y $y unless $x
$x . $y $y <~ $x
$x ( $y ) $y ~> $x
Which I personally think is a Good Thing: I like to structure my code to
put the most important part of a statement on the left and exceptional
cases and details on the right. Having multiple operators with different
precedence (&&, and, if) also helps avoiding lots of parentheses, which I
think is another Good Thing because they make code look cluttered. When
I want visual grouping I prefer to use extra whitespace. Perhaps it's
not as maintainable, but it is more readable imho.
Hmmm.. and I just realized.. is something like 'print while <>;' still
available in perl 6? And if so, that means the while-loop would
topicalize in this case? What would the criterium be for "this case"? (I
hope not the kludge it is right now in perl 5 ;-)
--
Matthijs van Duin -- May the Forth be with you!
Thread Next
-
Statement modifiers
by Matthijs van Duin