An arbitrary for the underlying type A.
An arbitrary for the underlying type B.
An arbitrary for the underlying type C.
An equivalence for the underlying type A.
An equivalence for the underlying type B.
An equivalence for the underlying type C.
The higher-kinded type Typeclass<F> is the typeclass instance under test.
For example when testing the Monad laws on an Either<number, string>,
this would be Monad<Either>.
A function that will get an arbitrary for the type under test from an arbitrary for the underlying type.
A function that will get an equivalence for the type under test from an equivalence for the underlying type.
Required Monoid for the underlying type A, useful for typeclasses
like Applicative that can build their own Monoid instance from it.
Predicate for values of type A.
Predicate for values of type B.
Predicate for values of type C.
Options for testing parameterized-type typeclasses. All the typeclass laws here expect their arguments to be of this type.
Type Param: F
The type lambda of the datatype under test. For example when testing an instance of
Covariant<Array<string>>,Fwould be the type lambda of the higher-kinded typeArray.