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! |