Richard Hainsworth wrote:
Thinking about Jon Lang's -1|+1 example in another way, I wondered about
simultaneous conditions.
Consider
$x = any (1,2,5,6)
How do we compose a conditional that asks if any of this set of
eigenstates are simultaneously both > 2 and < 5?
Clearly the desired answer for $x is False, but
my $x = any(1,2,5,6); say ?( 2 < $x < 5); # true
Is there some combination of any/all that will achieve this?
Here it would seem that we would want to have some sieving, so that
eigenstates that are true for one test can be given to another test.
One answer is to use "grep":
$x = any (1,2,5,6);
say ?( (2^..^5).grep: { $_ == $x } ); # "False"
This isn't, of course, quite what you asked for, because the semantics
of relops are continuous. So you'd want something like:
$x = any (1,2, 2.5, 5,6);
say ?( (2^..^5 :real).grep: { $_ == $x } ); # "False"
(or whatever the syntax for a continuous range is). That might take a
while to complete, hence my desire for an analytic grep
That said, the semantics of a chained relop really should work correctly
for this. If you only reference a junction once in an expression, then
it should behave as such: {a<b<c} !=== {a<b && b<c}.