diff --git a/core/src/main/scala/cats/Eval.scala b/core/src/main/scala/cats/Eval.scala index bf6529d3c3..28cd4f1fee 100644 --- a/core/src/main/scala/cats/Eval.scala +++ b/core/src/main/scala/cats/Eval.scala @@ -375,8 +375,8 @@ object Eval extends EvalInstances { private[cats] sealed abstract class EvalInstances extends EvalInstances0 { - implicit val catsBimonadForEval: Bimonad[Eval] = - new Bimonad[Eval] with StackSafeMonad[Eval] { + implicit val catsBimonadForEval: Bimonad[Eval] with CommutativeMonad[Eval] = + new Bimonad[Eval] with StackSafeMonad[Eval] with CommutativeMonad[Eval] { override def map[A, B](fa: Eval[A])(f: A => B): Eval[B] = fa.map(f) def pure[A](a: A): Eval[A] = Now(a) def flatMap[A, B](fa: Eval[A])(f: A => Eval[B]): Eval[B] = fa.flatMap(f) diff --git a/tests/src/test/scala/cats/tests/EvalSuite.scala b/tests/src/test/scala/cats/tests/EvalSuite.scala index 47a1d7d6a2..91d8f72494 100644 --- a/tests/src/test/scala/cats/tests/EvalSuite.scala +++ b/tests/src/test/scala/cats/tests/EvalSuite.scala @@ -2,7 +2,7 @@ package cats package tests import cats.laws.ComonadLaws -import cats.laws.discipline.{BimonadTests, SemigroupalTests, ReducibleTests, SerializableTests} +import cats.laws.discipline.{BimonadTests, CommutativeMonadTests, SemigroupalTests, ReducibleTests, SerializableTests} import cats.laws.discipline.arbitrary._ import cats.kernel.laws.discipline.{EqTests, GroupTests, MonoidTests, OrderTests, PartialOrderTests, SemigroupTests} import org.scalacheck.{Arbitrary, Cogen, Gen} @@ -93,6 +93,9 @@ class EvalSuite extends CatsSuite { checkAll("Eval[Int]", BimonadTests[Eval].bimonad[Int, Int, Int]) } + checkAll("Eval[Int]", CommutativeMonadTests[Eval].commutativeMonad[Int, Int, Int]) + checkAll("CommutativeMonad[Eval]", SerializableTests.serializable(CommutativeMonad[Eval])) + checkAll("Bimonad[Eval]", SerializableTests.serializable(Bimonad[Eval])) checkAll("Eval[Int]", ReducibleTests[Eval].reducible[Option, Int, Int])