Proposal: Make Eq type class single method

Joachim Breitner mail at joachim-breitner.de
Mon Oct 25 13:22:07 UTC 2021


Hi,

ah, yes, let me summarize my main motivation (perf benefits were just a
side-benefit I was hoping for):

You can’t implement (/=) faster than (==) (up to, in the worst case,
the cost of a single `not`, which often gets optimized away anyways). 

As such, having (/=) in Eq was a (small) mistake back then, and it’s
worth fixing.

There is one time cost of asking developers to _remove_ code. But code
that was probably not worth writing in the first place! And I don’t
blame them, the Eq class _invites_ writing that code.

Then the benefits are twofold:
 
 * No more awkwards explanations about silly things in the likely first
   type class that developers care about.

 * Less code to read, maintain, compile in all the libraries that _do_
   define (/=) right now.

 * Devs who instantiate Eq in the future will not be tricked into 
   wondering if they need to implement (/=) and why.

So even if “helps teaching beginners” doesn’t beat “having to bug
maintainers”, then maybe the second point (“saving all develpers time
and effort in the future”) does?

Cheers,
Joachim
-- 
Joachim Breitner
  mail at joachim-breitner.de
  http://www.joachim-breitner.de/




More information about the Libraries mailing list