ComposeLaw

abstract class ComposeLaw[-CapsBothF[_[_, _]], -Caps[_]](label: String) extends Divariant[CapsBothF, Caps, Caps, Any]

Constructs a law from a pure function taking one parameterized value and two functions that can be composed.

class Divariant[CapsBothF, Caps, Caps, Any]
class Object
trait Matchable
class Any
ComposeLaw[CapsBothF, Caps]

Value members

Abstract methods

def apply[F[_, _] : CapsBothF, A : Caps, B : Caps, A1 : Caps, A2 : Caps](fa: F[A, B], f: A => A1, g: A1 => A2): TestResult

Concrete methods

final def run[R, F[_, _] : CapsBothF, A : Caps, B : Caps, A1 : Caps, A2 : Caps](genF: GenF2[R, F], genB: Gen[R, B], genA1: Gen[R, A1], genA2: Gen[R, A2])(implicit evidence$12: CapsBothF[F], evidence$13: Caps[A], evidence$14: Caps[B], evidence$15: Caps[A1], evidence$16: Caps[A2], trace: Trace): URIO[R, TestResult]

Inherited methods

def +[CapsF1 <: ([x[_, _]] =>> CapsBothF[x]), CapsLeft1 <: (Caps), CapsRight1 <: (Caps), R1](that: Divariant[CapsF1, CapsLeft1, CapsRight1, R1]): Divariant[CapsF1, CapsLeft1, CapsRight1, R1]

Combine these laws with the specified laws to produce a set of laws that require both sets of laws to be satisfied.

Combine these laws with the specified laws to produce a set of laws that require both sets of laws to be satisfied.

Inherited from:
Divariant
def run[R1, F[_, _] : CapsBothF, A : Caps, B : Caps](genF: GenF2[R1, F], gen: Gen[R1, B])(implicit evidence$1: CapsF[F], evidence$2: CapsLeft[A], evidence$3: CapsRight[B], trace: Trace): ZIO[R1, Nothing, TestResult]

Test that values of type F[+_,-_] satisfy the laws using the specified function to construct a generator of F[A,B] values given a generator of B values.

Test that values of type F[+_,-_] satisfy the laws using the specified function to construct a generator of F[A,B] values given a generator of B values.

Inherited from:
Divariant