On Tue, 2004-08-24 at 15:55, Adam D. Lopresto wrote:
> On Tue, 24 Aug 2004, Aaron Sherman wrote:
> > Yep, and since ~~ auto-topicalizes its lhs for its rhs, your binary ??
> > is all you need. I wish I'd seen your message before I sent my recent
> > one, as I would have just started from there.
> >
> > Precedence worries me a bit, since I don't know how ~~ and ?? would fit,
> > but it's certainly nice to have this construct use a generic Perl 6
> > operator like ~~ and not have to have any ternary constructs in the
> > language.
>
>
> My problem is that then you can't get to the original topic. I think too much
> topic-clobbering will be confusing.
>
> say chars($_) > 70 ~~ abbreviate($_) ?? $_; #oops, prints the length
You don't HAVE to use auto-topicalization. You CAN always write it
long-hand if you find that confusing:
for @words -> $word {
given ($chars($word) > 70) -> $toolong {
say abbreviate($word) ?? $word;
}
}
But, I find:
for @words -> $word {
say $word ~~ abbreviate($word) ?? $word;
}
much simpler! Overall, I would discourage the use of C<$_> as topic in
most situations. We spent so long in Perl 5 wanting the ability to
default to whatever variable we wanted, to keep using C<$_> in the
general case now that we have that is kind of a step backwards. I think
Perl 6 programmers are going to have to treat C<$_> as more of a
second-class citizen and rely more on named topics.
Either way, the core idea that the third expression in C<?:> in Perl 6
should be the current topic is, I think, well worth using.
--
â 781-324-3772
â [EMAIL PROTECTED]
â http://www.ajs.com/~ajs