junction adverb: :except

6 views
Skip to first unread message

David Christensen

unread,
Apr 18, 2005, 7:01:42 PM4/18/05
to perl6-l...@perl.org
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...

David

Luke Palmer

unread,
Apr 18, 2005, 7:08:36 PM4/18/05
to David Christensen, perl6-l...@perl.org

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

Reply all
Reply to author
Forward
0 new messages