I read about Perl6::Junction in an article on blogs.perl.org and I was tickled. I quickly went on CPAN to see what the module was about beyond the post above, and saw two enthusiastic reviews by two bigs (at least this is what I consider both of them).
I have to say that I was a bit disappointed in seeing that they both
talked about very clear documentation, while it seemed a bit too minimal
for my taste. I do agree that the test suite is complete, anyway, and
it’s a useful source for examples too! The tests are indeed quite
extensive, and there are also tests for something that made me curious,
i.e.: “will it be possible to use junctions on both sides?”. The answer
turns out to be positive, and there are tests for those cases (see the
t/join.t
test file for details).
One funny thing in the module is that the following both apply:
my $is_true = (all(3, 4) == any(3, 4));
my $is_NOT_true = (any(3, 4) == all(3, 4));
It actually makes sense: the first says “do all elements in the {3, 4}
set have something equal to them in the {3, 4}
set?”. Course they do,
because 3
in the first set has 3
in the second, and 4
in the first set
has 4
in the second. The second says “is any element in the {3, 4}
equal
to all the elements in {3, 4}
?”. Course there isn’t, because 3
from the
first set is equal to 3
in the second set, but fails to be equal to 4
.
Hence, the (numeric) equality operator does not maintain the reflexive property here, and it seems just… weird, even though it makes perfectly sense.