On Thu, Apr 06, 2006 at 02:35:53PM -0400, Matt Fowles wrote:
: That makes a good deal of sense. I don't know what I would like more,
: so I guess that I will wait till a more firm consensus is reached.
The current consensus on #perl6 is that, in postfix position only (that
is, with no leading whitespace), m:p/\.+ \s<ws> <before \.>/ lets you embed
arbitrary whitespace, comments, pod, etc, within the postfix operator.
This allows both the short
:foo. .()
as well as the longer
$x...
.foo()
Or possibly m:p/ [ \.+ \s<ws> ]+<before \.>/, which would let you intermix as
many dots into the whitespace as you like:
$x. . . . . .()
But that's a little out there. In any event $x..$y is still a range
because there's no whitespace after .. and $x .. $y is still a range
*because* there's whitespace before. The only casualty is $x... with
trailing whitespace can't mean $x..Inf. But you almost always want to
put something like a comma or bracket after it anyway.
And the nice thing is that it becomes a drop-dead simple rule that
postfix operators never, ever have leading whitespace, and you can always
distingish an infix operator from a postfix by whitespace. No more
retroactive guessing games.
It's possible the $x... infinite range operator could be recast to
something else like $x..* or some such, but that's a niggle compared
to the enormity of cleaner parsing.
Larry