You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Feb 8, 2022. It is now read-only.
Something that I've received requests for is an easier way to define these instances.
Here's an example of what I mean (assume we can't automatically derive instances for case classes/products):
caseclassFoo(a: Int, b: String, c: Int)
// a function is used if the previous function returned 0/EQvalo1:Order[Foo] =Order.fromAll[Foo](
(x, y) => x.a compare y.a,
(x, y) => x.b compare y.b,
(x, y) => x.c compare y.c)
// here's an even more terse version that will use Order[Int] and Order[String]valo2:Order[Foo] =Order.byAll(_.a, _.b, _.c)
The logic in both cases is that the first function is used -- and if the items are equal, the next one is used, otherwise the result returns immediately. If after the last function runs they are equal, then 0/EQ is returned.
The text was updated successfully, but these errors were encountered:
we've been making macros for these cases. I assume the macros offer better performance, but maybe I'm wrong. Certainly better usability.
I can see adding these "generalization over case class" instances being something we have standard macros for in many of our cases: Semigroup, Monoid, Group, Ring (but not Field), Order, Eq, PartialOrder, and probably more.
I would be happy to use macros. I agree that the performance will be much better when function literals are used (they can be inlined into the code you would explicitly write, more-or-less).
Something that I've received requests for is an easier way to define these instances.
Here's an example of what I mean (assume we can't automatically derive instances for case classes/products):
The logic in both cases is that the first function is used -- and if the items are equal, the next one is used, otherwise the result returns immediately. If after the last function runs they are equal, then 0/EQ is returned.
The text was updated successfully, but these errors were encountered: