cats.labs.test
(applicative-composition {:keys [ctx gen appf appg eq], :or {eq =}})
(applicative-homomorphism {:keys [ctx gen f eq], :or {eq =}})
(applicative-identity-law {:keys [ctx gen eq], :or {eq =}})
(applicative-interchange {:keys [ctx gen appf eq], :or {eq =}})
(bifunctor-bimap-identity {:keys [gen eq], :or {eq =}})
(bifunctor-composition {:keys [gen f g eq], :or {eq =}})
(bifunctor-first-identity {:keys [gen eq], :or {eq =}})
(bifunctor-second-identity {:keys [gen eq], :or {eq =}})
(first-functor-law {:keys [gen eq], :or {eq =}})
(first-monad-law {:keys [ctx mf gen eq], :or {gen gen/any, eq =}})
(monadplus-associativity {:keys [ctx gen eq], :or {eq =}})
(monadzero-bind {:keys [ctx gen zero eq], :or {zero (m/mzero ctx), eq =}})
(monadzero-identity-element {:keys [ctx gen eq], :or {eq =}})
(monoid-identity-element {:keys [ctx gen empty eq], :or {empty (m/mempty ctx), eq =}})
(second-functor-law {:keys [gen f g eq], :or {eq =}})
(second-monad-law {:keys [ctx eq], :or {eq =}})
(semigroup-associativity {:keys [ctx gen eq], :or {eq =}})
(third-monad-law {:keys [ctx f g eq], :or {eq =}})