David Christensen writes:
> Hypothetical here:
>
> If we want to calculate a set of values for a junction which map nicely
> to a range with a few outliers, would it be possibly to have a
> qualifier :except which allows us to make exceptions to our given
> range? I.e.,
>
> (Ignore for the moment the inefficiency of the choice of this
> particular algorithm.)
>
> my $year = 1900; # or whatever
>
> my $leap_year = $year % 400 == any(0..400 :by(4) :except(100,200,300));
>
> Here except would be a modifier on the range being generated for any().
> I could also see except being used to "strip choices" from junctions:
>
> my $j = 1|2|3|4;
> my $k=$j :except(2); # 1|3|4
>
> Let me know if I'm totally abusing junctions here...
No, you're abusing adverbs. You can't give an adverb to a variable
(because adverbs don't modify actually nouns :-). I don't know if we've
destroyed Damian's comparator semantic, but if not, then you can just
do:
my $k = ($j != 2);
But if that no longer happens, it's best a method on the junction.
Except every time we add a method to junction, we destroy the ability to
automatically thread that method over the junction. I've proposed
several solutions to this over the years (applying to autodelegating
iterators as well). I still think it's something that that needs to be
solved.
Luke