Hi, Yuval Kogman wrote: > I think this is more consistent, and just as useful: > > 10 == 10; # dispatches to num > "10" == 10; # dispatched to Num, by means of coercion (== has some > affinity to it for backwards compatibility) "10" == "10"; # dispatches > to Str, due to better match "10.0" == "10"; # unlike perl 5 this is > false "10.0" +== "10"; # but this is true > 10 ~== 10; # like eq
sorry, I've some problems with this proposal: == has always meant numeric equality in Perl and I'd like it to stay that way. More importantly, the distinction between +== and ~== is far too subtle, I think -- the two long =s kind of hide the +~?. You have to look more carefully to see the distinction between +== and ~==; == vs. eq is much more apparent, IMHO. Oh and +== isn't as good huffmanized as == is. > The "matchic MMD generator" in the prelude, that makes the complex > set of rules found in s04 should simply apply to any infix operator > (and should be applied in the prelude to ~~, as well as ==), so that > ~~ and == on collections are defined with the same aggregate > semantics, but MMD ~~ or == applies to the nested elements in the > same "shape": > > sub extend_comparators (&op) { [...] I think I like that idea, although I have to admit that I might have not understood it fully. I wonder whether it's possible to use an adverbial modifier to specify the comparator: say @foo ~~ @bar; # is really say @foo ~~ @bar :comparator{ $^a ~~ $^b }; say @foo ~~ @bar :comparator{ $^a eq $^b }; say @foo ~~ @bar :comparator{ $^a == $^b }; --Ingo -- Linux, the choice of a GNU | "The future is here. It's just not widely generation on a dual AMD | distributed yet." -- William Gibson Athlon! |