On Wednesday, April 01 2009 07:38 am, Richard Hainsworth wrote: > Right now, yes. I'm arguing that the way that they're designed to > work doesn't DWIM. Try a slightly different example: > > 0 <= $x <= 1 # 0 is less than $x is less than 1. > $x ~~ 0..1 # $x is in the range of 0 to 1. > > I submit that most people would expect these two statements to be > conceptually equivalent to each other: they may go about tackling the > issue from different angles, but they should always end up reaching > the same conclusion. But as things stand now, if $x = -2 | 2, these > result in two very different conclusions: the first evaluates as true, > the second as false. This most certainly doesn't do what I mean until > I have been indoctrinated into the intricacies of Perl and learned to > think like it does - which runs directly counter to the principle of > DWIM.
When you say DWIM, I take it you mean that there is an assumption that $x is a point in a field (http://en.wikipedia.org/wiki/Field_theory_(mathematics)). As you have illustrated, junctions do no form a field. You would run into the similar problems if $x was a point in a ring (http://en.wikipedia.org/wiki/Ring_(mathematics)). Consider the ring of "integers modulo 8": my Ring8 $x = 5 + 3; # evaulates to "0" say "OMG, its 0!" unless $x; # prints the message which does not DWIM if I am expecting $x to be part of a field. Maybe the problem is that junctions are too easy to create, which is causing people to confuse the "mathematical" structure of the space created by using a junction with that of the structure of the space of the underlying (non-junctioned) object. Regards, Henry