This project has given up GitHub. (See Software Freedom Conservancy's Give Up GitHub site for details.)
You can now find this project at paste.rossabaker.com instead.
Any use of this project's code by GitHub Copilot, past or present, is done without our permission. We do not consent to GitHub's use of this project's code in Copilot.
Join us; you can give up GitHub too! Ready to make the change? Have a look at the convenience script.

I don't know about "tricky".
CIStringsatisfies the contract of.equals. There's no substitution law.cats.Eqdoesn't have one either. Haskell'sEqrecently added it as an "expectation", but officially has no laws. We should strongly prefer that property, but it's neither illegal nor unusual to break it. A couple more examples:(s: Set[A] => s.toList)(ordering is undefined)(d: Double) => 1.0 / d(try it with0.0and-0.0)A set whose equivalence relation guarantees substitution is a functor, but Scala's
Setdoesn't, so it's not.