3 ms·
So are you complaining that Perl 6 allows Math majors to use the Unicode operators that they are used to, and that work the way they would expect? Also all of
by b2gills 10y ago
So are you complaining that Perl 6 allows Math majors to use the Unicode operators that they are used to, and that work the way they would expect?
Also all of the Set/Bag/Mix ASCII equivalents are fairly easy to remember or to guess once you know that they all have parens around them. ( as in guess how to spell it, and guess what it does )
(elem) left value is an element of the right value
(cont) left value contains the right value ( dual of previous )
(|) returns a superset of both sides ( or )
(&) returns a set of values that are on both sides ( and )
(-) set that contains the values that are on the left but not the right ( minus )
(^) set that contains the values that are only on one side ( xor )
(<=) left value is a subset or equal to right value ( less than or equal to )
(<) left value is only a subset of right value ( less than )
(>=) (>) duals of previous two
(.) multiset multiplication ( looks a bit like the Unicode version )
(+) Bag/Mix addition
(<+) left value has fewer or equal numbers than right value ( Bag less than or equal )
(>+) left value has more or equal numbers than right value ( Bag greater than or equal )
< a B > (<+) <a B B c> # True
< a B B > (<+) <a B B c> # True
< a B B B > (<+) <a B B c> # False
< a d > (<+) <a B B c> # False
The ones with + all can be thought of as counting variations of the or equal operators.
The only one I would really complain about is the multiplication one, and there is nothing stopping someone from doing this:
my &infix:< (*) > := &infix:< (.) >;
If you really don't like them, don't use them.
I mean they are mostly wrappers around other functionality anyway https://github.com/rakudo/rakudo/blob/nom/src/core/set_operators.pm https://github.com/rakudo/rakudo/blob/nom/src/core/set_opera...
proto sub infix:<(elem)>($, $ --> Bool) is pure {*}
multi sub infix:<(elem)>($a, Any $b --> Bool) {
$a (elem) $b.Set(:view);
}
multi sub infix:<(elem)>($a, Set $b --> Bool) {
$b.EXISTS-KEY($a); # internal method for implementing $b{ $a } :exists
}