scalaprops.scalazlaws.bitraverse.scala Maven / Gradle / Ivy
package scalaprops
package scalazlaws
import scalaz._
import scalaz.std.tuple._
import scalaz.std.anyVal._
object bitraverse {
def laws[F[_, _]](implicit
fa: Gen[F[Int,Int]],
F: Bitraverse[F],
EF: Equal[F[Int, Int]],
G1: Gen[F[Int, Maybe[Int]]],
G2: Gen[F[Maybe[Int], Int]]
): Properties[(ScalazLaw, *^*->*.T)] = Properties.fromProps(
ScalazLaw.bitraverse -> *^*->*.Empty,
traverse.all[({type l[a] = F[a, Int]})#l](F.leftTraverse[Int], implicitly, implicitly, implicitly).mapId((_, *^*->*.L)),
traverse.all[({type l[a] = F[Int, a]})#l](F.rightTraverse[Int], implicitly, implicitly, implicitly).mapId((_, *^*->*.R)),
bifoldable.all[F],
bifunctor.laws[F]
)
def all[F[_, _]](implicit
fa: Gen[F[Int,Int]],
F: Bitraverse[F],
EF: Equal[F[Int, Int]],
G1: Gen[F[Int, Maybe[Int]]],
G2: Gen[F[Maybe[Int], Int]]
) = laws[F]
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy