Skip to content

Commit

Permalink
Algebra*Instances → Kernel*Instances, rename implicit instances
Browse files Browse the repository at this point in the history
  • Loading branch information
OlivierBlanvillain committed Jun 14, 2016
1 parent 0929c20 commit 01f82dd
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 20 deletions.
12 changes: 6 additions & 6 deletions core/src/main/scala/cats/Cartesian.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ import simulacrum.typeclass
def product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
}

object Cartesian extends CartesianArityFunctions with AlgebraCartesianInstances
object Cartesian extends CartesianArityFunctions with KernelCartesianInstances

/**
* Cartesian instances for types that are housed in Algebra and therefore
* can't have instances for Cats type classes in their companion objects.
* Cartesian instances for types that are housed in cats.kernel and therefore
* can't have instances for this type class in their companion objects.
*/
private[cats] sealed trait AlgebraCartesianInstances {
implicit val invariantSemigroup: Cartesian[Semigroup] = InvariantMonoidal.invariantMonoidalSemigroup
implicit val invariantMonoid: Cartesian[Monoid] = InvariantMonoidal.invariantMonoidalMonoid
private[cats] sealed trait KernelCartesianInstances {
implicit val catsInvariantSemigroup: Cartesian[Semigroup] = InvariantMonoidal.catsInvariantMonoidalSemigroup
implicit val catsInvariantMonoid: Cartesian[Monoid] = InvariantMonoidal.catsInvariantMonoidalMonoid
}
12 changes: 6 additions & 6 deletions core/src/main/scala/cats/InvariantMonoidal.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ import simulacrum.typeclass
def pure[A](a: A): F[A]
}

object InvariantMonoidal extends AlgebraInvariantMonoidalInstances
object InvariantMonoidal extends KernelInvariantMonoidalInstances

/**
* InvariantMonoidal instances for types that are housed in Algebra and therefore
* can't have instances for Cats type classes in their companion objects.
* InvariantMonoidal instances for types that are housed in cats.kernel and therefore
* can't have instances for this type class in their companion objects.
*/
private[cats] trait AlgebraInvariantMonoidalInstances {
implicit val invariantMonoidalSemigroup: InvariantMonoidal[Semigroup] = new InvariantMonoidal[Semigroup] {
private[cats] trait KernelInvariantMonoidalInstances {
implicit val catsInvariantMonoidalSemigroup: InvariantMonoidal[Semigroup] = new InvariantMonoidal[Semigroup] {
def product[A, B](fa: Semigroup[A], fb: Semigroup[B]): Semigroup[(A, B)] = new Semigroup[(A, B)] {
def combine(x: (A, B), y: (A, B)): (A, B) = fa.combine(x._1, y._1) -> fb.combine(x._2, y._2)
}
Expand All @@ -33,7 +33,7 @@ private[cats] trait AlgebraInvariantMonoidalInstances {
}
}

implicit val invariantMonoidalMonoid: InvariantMonoidal[Monoid] = new InvariantMonoidal[Monoid] {
implicit val catsInvariantMonoidalMonoid: InvariantMonoidal[Monoid] = new InvariantMonoidal[Monoid] {
def product[A, B](fa: Monoid[A], fb: Monoid[B]): Monoid[(A, B)] = new Monoid[(A, B)] {
val empty = fa.empty -> fb.empty
def combine(x: (A, B), y: (A, B)): (A, B) = fa.combine(x._1, y._1) -> fb.combine(x._2, y._2)
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/scala/cats/data/Const.scala
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ private[data] sealed abstract class ConstInstances0 extends ConstInstances1 {
}

private[data] sealed abstract class ConstInstances1 {
implicit def constInvariantMonoidal[C: Monoid]: InvariantMonoidal[Const[C, ?]] = new InvariantMonoidal[Const[C, ?]] {
implicit def catsConstInvariantMonoidal[C: Monoid]: InvariantMonoidal[Const[C, ?]] = new InvariantMonoidal[Const[C, ?]] {
def pure[A](a: A): Const[C, A] =
Const.empty

Expand Down
12 changes: 6 additions & 6 deletions core/src/main/scala/cats/functor/Invariant.scala
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ import simulacrum.typeclass
}
}

object Invariant extends AlgebraInvariantInstances
object Invariant extends KernelInvariantInstances

/**
* Invariant instances for types that are housed in Algebra and therefore
* can't have instances for Cats type classes in their companion objects.
* Invariant instances for types that are housed in cats.kernel and therefore
* can't have instances for this type class in their companion objects.
*/
private[functor] sealed trait AlgebraInvariantInstances {
implicit val invariantSemigroup: Invariant[Semigroup] = InvariantMonoidal.invariantMonoidalSemigroup
implicit val invariantMonoid: Invariant[Monoid] = InvariantMonoidal.invariantMonoidalMonoid
private[functor] sealed trait KernelInvariantInstances {
implicit val catsInvariantSemigroup: Invariant[Semigroup] = InvariantMonoidal.catsInvariantMonoidalSemigroup
implicit val catsInvariantMonoid: Invariant[Monoid] = InvariantMonoidal.catsInvariantMonoidalMonoid
}
2 changes: 1 addition & 1 deletion free/src/main/scala/cats/free/FreeInvariantMonoidal.scala
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ object FreeInvariantMonoidal {
Suspend(fa)

/** `FreeInvariantMonoidal[S, ?]` has a FreeInvariantMonoidal for any type constructor `S[_]`. */
implicit def freeInvariant[S[_]]: InvariantMonoidal[FA[S, ?]] =
implicit def catsFreeInvariantMonoidal[S[_]]: InvariantMonoidal[FA[S, ?]] =
new InvariantMonoidal[FA[S, ?]] {
def pure[A](a: A): FA[S, A] = FreeInvariantMonoidal.pure(a)
def imap[A, B](fa: FA[S, A])(f: A => B)(g: B => A): FA[S, B] = fa.imap(f)(g)
Expand Down

0 comments on commit 01f82dd

Please sign in to comment.