Skip to content

Commit 64e7eca

Browse files
committed
Some little improvements
1 parent 8a9ecfb commit 64e7eca

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/main/scala/fpspeedrun/Ratio.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import fpspeedrun.Ord.Compare._
55
final case class Ratio(numer: Int, denom: Int)
66

77
object Ratio {
8-
implicit val eqRatio: Eq[Ratio] =
9-
(x: Ratio, y: Ratio) => x.numer * y.denom == y.numer * x.denom
108

119
implicit val ordRatio: Ord[Ratio] = new Ord[Ratio] {
12-
override def ===(x: Ratio, y: Ratio): Boolean = eqRatio.===(x, y)
10+
override def ===(x: Ratio, y: Ratio): Boolean =
11+
x.numer * y.denom == y.numer * x.denom
1312

1413
override def compare(x: Ratio, y: Ratio): Ord.Compare =
1514
if (===(x, y)) EQ

src/main/scala/fpspeedrun/syntax.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package fpspeedrun
22

3+
import fpspeedrun.Ord.Compare._
4+
35
object syntax {
46
object eq {
57
implicit class EqOps[T](val x: T) extends AnyVal {
@@ -9,6 +11,17 @@ object syntax {
911
object compare {
1012
implicit class CompareOps[T](val x: T) extends AnyVal {
1113
def compare(y: T)(implicit ord: Ord[T]): Ord.Compare = ord.compare(x, y)
14+
15+
def >(y: T)(implicit ord: Ord[T]): Boolean = compare(y) == GT
16+
def <(y: T)(implicit ord: Ord[T]): Boolean = compare(y) == LT
17+
def >=(y: T)(implicit ord: Ord[T]): Boolean = {
18+
val c = compare(y)
19+
c == GT || c == EQ
20+
}
21+
def <=(y: T)(implicit ord: Ord[T]): Boolean = {
22+
val c = compare(y)
23+
c == LT || c == EQ
24+
}
1225
}
1326
}
1427
}

0 commit comments

Comments
 (0)