On 10/29/02 3:13 PM, Damian Conway wrote:
> I suspect it will be quite unusual to see nested superpositions
> in code. Most folks are going to be using them for simple but
> very common checks like:
>
> [...]
>
> my $seen = $start | $finish;
> for <> -> $next {
> print $next unless $next == $seen;
> $seen |= $next;
> }
I just spent 2 minutes staring at that last example until I finally
understood it. While I agree that there are many common uses for this
stuff, not all common uses are "simple", IMO.
I think my hang-up mostly had to do with all the existing "knowledge" I have
about how "|" and "|=", and even "==" are "supposed" to work. Had the
example used the English versions of the operators, I would have gotten it
instantly:
my $seen = any($start, $finish);
for <> -> $next
{
print $next unless $next == $seen;
$seen = any($seen, $next);
}
(Okay, maybe I would have gotten stuck for a moment on the "$next == $seen"
part, but that's about it :)
Anyway, I think this is just a long-winded way of expressing my support for
an article explaining set operators (or "cat-bunny slippers" or whatever :)
and all their wonderful uses. And I also think the English versions of the
operators are much easier to understand, at least initially, if only due to
the historical baggage of |, &, and friends.
-John