On Tue, 2004-08-24 at 08:24, Aaron Sherman wrote:
> $foo => 'a' or 'b'
I was too focused on the idea of C<??>/C<::> as a pair-like construct,
and I missed what should have been obvious:
a ?? b :: c
IS
given a { when true { b } default { c } }
Which S4 tells us is:
a -> $_ { when true { b } default { c } }
If you take the C<??> out of the ternary expression and make it a
generic, binary logical operator that tests the topic for truth and
executes lhs if topic is true and rhs if it is false, then that becomes:
a -> $_ { b ?? c }
And further S4 tells us that that can become:
a ~~ b ?? c
because C<~~> automatically topicalizes its lhs for its rhs.
So, with the very minor change of making C<??> binary instead of
ternary, it turns out that we ALREADY HAVE a replacement for C<?:>, and
didn't realize it!
C<??> would also be darn useful in all sorts of places, as this lets you
write things like:
given a {
b ?? c;
say "We did the first step";
d ?? e;
say "We did the second step";
}
etc. My $0.02, but I think this is the way to go, and the whole C<::>
thing just fades into historical note land.
--
â 781-324-3772
â [EMAIL PROTECTED]
â http://www.ajs.com/~ajs