Re: Proposal: Make Eq type class single method

"Oliver Charles" <[email protected]> Mon, 25 Oct 2021 14:27:54 +0100
Newsgroups gmane.comp.lang.haskell.libraries
Message-ID <[email protected]>
I'd like to also add that there is another benefit - correctness.

 * Eq is easier to get right/harder to get wrong. Currently if you hand roll Eq, you could potentially implement both == and /=, but get one or the other wrong. With only == as a method, as long as you get that right, you are guaranteed that /= is also right.

On Mon, 25 Oct 2021, at 2:22 PM, Joachim Breitner wrote:
> 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
>   [email protected]
>   http://www.joachim-breitner.de/
> 
> 
> _______________________________________________
> Libraries mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>

_______________________________________________
Libraries mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries