Skip to content

Commit 132b4c3

Browse files
committed
Convert Band and Semilattice instances to SAM syntax
1 parent bf8ee7f commit 132b4c3

File tree

10 files changed

+21
-16
lines changed

10 files changed

+21
-16
lines changed

algebra-core/src/main/scala/algebra/lattice/BoundedJoinSemilattice.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ trait BoundedJoinSemilattice[@sp(Int, Long, Float, Double) A] extends Any with J
2929
def isZero(a: A)(implicit ev: Eq[A]): Boolean = ev.eqv(a, zero)
3030

3131
override def joinSemilattice: BoundedSemilattice[A] =
32-
BoundedSemilattice.instance(zero, join)
32+
new BoundedSemilattice[A] {
33+
def empty: A = zero
34+
def combine(x: A, y: A): A = join(x, y)
35+
}
3336
}
3437

3538
trait BoundedJoinSemilatticeFunctions[B[A] <: BoundedJoinSemilattice[A]] extends JoinSemilatticeFunctions[B] {

algebra-core/src/main/scala/algebra/lattice/BoundedMeetSemilattice.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ trait BoundedMeetSemilattice[@sp(Int, Long, Float, Double) A] extends Any with M
2929
def isOne(a: A)(implicit ev: Eq[A]): Boolean = ev.eqv(a, one)
3030

3131
override def meetSemilattice: BoundedSemilattice[A] =
32-
BoundedSemilattice.instance(one, meet)
32+
new BoundedSemilattice[A] {
33+
def empty: A = one
34+
def combine(x: A, y: A): A = meet(x, y)
35+
}
3336
}
3437

3538
trait BoundedMeetSemilatticeFunctions[B[A] <: BoundedMeetSemilattice[A]] extends MeetSemilatticeFunctions[B] {

algebra-core/src/main/scala/algebra/lattice/JoinSemilattice.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ import scala.{specialized => sp}
3232
trait JoinSemilattice[@sp(Int, Long, Float, Double) A] extends Any with Serializable {
3333
def join(lhs: A, rhs: A): A
3434

35-
def joinSemilattice: Semilattice[A] =
36-
Semilattice.instance(join)
35+
def joinSemilattice: Semilattice[A] = join(_, _)
3736

3837
def joinPartialOrder(implicit ev: Eq[A]): PartialOrder[A] =
3938
joinSemilattice.asJoinPartialOrder

algebra-core/src/main/scala/algebra/lattice/MeetSemilattice.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ import scala.{specialized => sp}
3232
trait MeetSemilattice[@sp(Int, Long, Float, Double) A] extends Any with Serializable {
3333
def meet(lhs: A, rhs: A): A
3434

35-
def meetSemilattice: Semilattice[A] =
36-
Semilattice.instance(meet)
35+
def meetSemilattice: Semilattice[A] = meet(_, _)
3736

3837
def meetPartialOrder(implicit ev: Eq[A]): PartialOrder[A] =
3938
meetSemilattice.asMeetPartialOrder

core/src/main/scala/cats/data/NonEmptyMapImpl.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,7 @@ sealed abstract private[data] class NonEmptyMapInstances extends NonEmptyMapInst
367367
implicit def catsDataShowForNonEmptyMap[K: Show, A: Show]: Show[NonEmptyMap[K, A]] = _.show
368368

369369
@deprecated("Use catsDataSemigroupForNonEmptyMap", "2.5.0")
370-
def catsDataBandForNonEmptyMap[K, A]: Band[NonEmptyMap[K, A]] =
371-
Band.instance(_ ++ _)
370+
def catsDataBandForNonEmptyMap[K, A]: Band[NonEmptyMap[K, A]] = _ ++ _
372371

373372
implicit def catsDataSemigroupForNonEmptyMap[K, A: Semigroup]: Semigroup[NonEmptyMap[K, A]] =
374373
(x, y) => NonEmptyMap.fromMapUnsafe(Semigroup[SortedMap[K, A]].combine(x.toSortedMap, y.toSortedMap))

core/src/main/scala/cats/data/NonEmptySet.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,9 @@ sealed abstract private[data] class NonEmptySetInstances extends NonEmptySetInst
429429
implicit def catsDataShowForNonEmptySet[A: Show]: Show[NonEmptySet[A]] = _.show
430430

431431
implicit def catsDataSemilatticeForNonEmptySet[A]: Semilattice[NonEmptySet[A]] =
432-
Semilattice.instance(_ | _)
432+
new Semilattice[NonEmptySet[A]] {
433+
def combine(x: NonEmptySet[A], y: NonEmptySet[A]): NonEmptySet[A] = x | y
434+
}
433435
}
434436

435437
sealed abstract private[data] class NonEmptySetInstances0 extends NonEmptySetInstances1 {

kernel/src/main/scala/cats/kernel/Band.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,5 @@ object Band extends SemigroupFunctions[Band] {
4242
/**
4343
* Create a `Band` instance from the given function.
4444
*/
45-
@inline def instance[@sp(Int, Long, Float, Double) A](cmb: (A, A) => A): Band[A] =
46-
cmb(_, _)
45+
@inline def instance[A](cmb: (A, A) => A): Band[A] = cmb(_, _)
4746
}

kernel/src/main/scala/cats/kernel/BoundedSemilattice.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ object BoundedSemilattice extends SemilatticeFunctions[BoundedSemilattice] {
4141
/**
4242
* Create a `BoundedSemilattice` instance from the given function and empty value.
4343
*/
44-
@inline def instance[@sp(Int, Long, Float, Double) A](emptyValue: A, cmb: (A, A) => A): BoundedSemilattice[A] =
44+
@inline def instance[A](emptyValue: A, cmb: (A, A) => A): BoundedSemilattice[A] =
4545
new BoundedSemilattice[A] {
4646
override val empty: A = emptyValue
4747
override def combine(x: A, y: A): A = cmb(x, y)

kernel/src/main/scala/cats/kernel/Semilattice.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,5 @@ object Semilattice extends SemilatticeFunctions[Semilattice] {
8585
/**
8686
* Create a `Semilattice` instance from the given function.
8787
*/
88-
@inline def instance[@sp(Int, Long, Float, Double) A](cmb: (A, A) => A): Semilattice[A] =
89-
cmb(_, _)
88+
@inline def instance[A](cmb: (A, A) => A): Semilattice[A] = cmb(_, _)
9089
}

laws/src/main/scala/cats/laws/discipline/MiniInt.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ object MiniInt {
9393
def combine(x: MiniInt, y: MiniInt): MiniInt = x * y
9494
}
9595

96-
val miniIntOr: BoundedSemilattice[MiniInt] =
97-
BoundedSemilattice.instance(MiniInt.zero, _ | _)
96+
val miniIntOr: BoundedSemilattice[MiniInt] = new BoundedSemilattice[MiniInt] {
97+
val empty = MiniInt.zero
98+
def combine(x: MiniInt, y: MiniInt): MiniInt = x | y
99+
}
98100
}

0 commit comments

Comments
 (0)