@@ -32,6 +32,8 @@ class Category cat => Products cat where
3232 (***) :: cat a b -> cat c d -> cat (a, c) (b, d)
3333 a *** b = first a >>> second b
3434
35+ {-# MINIMAL (***) | first, second #-}
36+
3537instance Monad m => Products (Kleisli m) where
3638 (***) = (BadArrow.***)
3739
@@ -45,6 +47,8 @@ class Category cat => Coproducts cat where
4547 (+++) :: cat a b -> cat c d -> cat (Either a c) (Either b d)
4648 a +++ b = left a >>> right b
4749
50+ {-# MINIMAL (+++) | left, right #-}
51+
4852instance Monad m => Coproducts (Kleisli m) where
4953 (+++) = (BadArrow.+++)
5054
@@ -52,9 +56,13 @@ class Category cat => CatPlus cat where
5256 cempty :: cat a b
5357 (/+/) :: cat a b -> cat a b -> cat a b
5458
59+ {-# MINIMAL cempty, (/+/) #-}
60+
5561instance MonadPlus m => CatPlus (Kleisli m) where
5662 cempty = BadArrow.zeroArrow
5763 (/+/) = (BadArrow.<+>)
5864
5965class CategoryTrans t where
6066 clift :: Category cat => cat a b -> t cat a b
67+
68+ {-# MINIMAL clift #-}