Paul Westcott
Paul Westcott
The did leave remnants of this optimization in there (which, you could argue, are breaking changes...): var count = 0; var ignore = Enumerable .Range(0, 100) .Select(x => { ++count;...
> Is this PR breaking? > No. This is (supposed to be just) an optimization. Well... It'll be calling IEquatable.Equals, not object.Equals, which is hence a breaking change - albeit...
> @manofstick Could you remind me of the specific thing that causes the call to IEquatable.Equals
@psfinaki ...forgive my github comment coding, I think memory serves, but it's more than enough for the gist of things if it's incorrect... ```fsharp [] // only for sealed type...
> >64 bit value types > This became marginally faster I'm just relying on your words here, as I have not built this, but they should be significantly faster, and...
FYI I'm attacking some boxing issues in #513, but this case is still kind of an issue (your second example no longer causes boxing with that change applied). As I've...
@asik An alternative to NonStructuralComparison could be ``` module EquatableModule = let inline eq System.IEquatable
@asik Oh, and you're still going to run into lots of trouble using value types anyway. Using them as keys to containers, embedding them in other objects, in the 64-bit...
@asik, Will I wouldn't really recommend it, but each to their own; and whoever has to support the code in the future! As overriding = would mean that they couldn't...
@OnurGumus The Phoenix of #513 will rise again at some stage, but i have been on a bit of a round about adventure which sees me currently in #2587 Although...