Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IM instances need to be "forwarded" in Cartesian companion
This example (which is part of the tut): ```scala import cats.std.all._ import cats.syntax.all._ // Let's build a Semigroup for this case class case class Foo(a: String, c: List[Double]) implicit val fooSemigroup: Semigroup[Foo] = ( (implicitly[Semigroup[String]] |@| implicitly[Semigroup[List[Double]]]) .imap(Foo.apply)(Function.unlift(Foo.unapply)) ) ``` Fails with ``` <console>:23: error: value |@| is not a member of cats.Semigroup[String] (implicitly[Semigroup[String]] |@| implicitly[Semigroup[List[Double]]]) ``` If I remove the following explicit "forwarding" of `InvariantMonoidal` instances in `Cartesian` companion object: ``` object Cartesian extends CartesianArityFunctions with AlgebraCartesianInstances /** * Cartesian instances for types that are housed in Algebra and therefore * can't have instances for Cats type classes in their companion objects. */ private[cats] sealed trait AlgebraCartesianInstances { implicit val invariantSemigroup: Cartesian[Semigroup] = InvariantMonoidal.invariantMonoidalSemigroup implicit val invariantMonoid: Cartesian[Monoid] = InvariantMonoidal.invariantMonoidalMonoid } ``` Here is the output from travis for reference: - https://travis-ci.org/typelevel/cats/jobs/138068094
- Loading branch information