Inspiration Was Taken From the never published cats-check. Instances for Cats for scalacheck types. So all credit to erik-stripe and the last maintainer mdedetrich for their original work on this that helped me build this.
To use cats-scalacheck in an existing SBT project with Scala 2.11 or a later version, add the following dependency to your
libraryDependencies += "io.chrisdavenport" %% "cats-scalacheck" % "<version>"
import org.scalacheck._ import org.scalacheck.cats.implicits._ import cats.Applicative import cats.implicits._ val apComposition: Gen[(Int, String)] = Applicative[Gen].product( Arbitrary.arbitrary[Int], Arbitrary.arbitrary[String] )
Monoid[A] => Monoid[Gen[A]]
Semigroup[A] => Semigroup[Gen[A]]
Why in org.scalacheck
This was necessary because scalacheck makes some of their instances package private that are required to roll these meaningfully.