Я играю с этой маленькой штукой, где набор может выступать в качестве дополнения, переворачивая тесты. Чтобы сделать эту работу, я создаю специальные версии операторов членства.
class Complement {
has $.set;
}
multi infix:<∈> ( $a, Complement:D $c ) { $a ∉ $c.set }
multi infix:<∉> ( $a, Complement:D $c ) { $a ∈ $c.set }
my $set = (1, 2, 3).Set;
my $c = Complement.new: set => $set;
put 3 ∈ $set;
put 4 ∈ $c;
С моим определением infix:<∉>
другой, более общий, кажется, исчез. Других кандидатов нет:
True
Cannot resolve caller infix:<∉>(Int, Set); none of these signatures match:
($a, Complement:D $c)
in sub infix:<∈> at /Users/brian/Desktop/complement.p6 line 11
in block <unit> at /Users/brian/Desktop/complement.p6 line 18
Что мне нужно сделать, чтобы сохранить предыдущие определения с разными сигнатурами?