All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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