An instance of
Category (~>) declares the arrow
(~>) as a category.
The category with Haskell types as objects and Haskell functions as arrows.
The category with categories as objects and adjunctions as arrows.
The category of all monoids, with monoid morphisms as arrows.
|Category ~> => Category (Op ~>)|
|Category (Discrete n) => Category (Discrete (S n))|
|Category (Discrete Z)|
|Monoid m => Category (MonoidA m)|
A monoid as a category with one object.
|HasTerminalObject ~> => Category (Peano ~>)|
|(Category c1, Category c2) => Category (:**: c1 c2)|
The product category of category
|(Category c, Category d) => Category (Nat c d)|
Functor category D^C. Objects of D^C are functors from C to D. Arrows of D^C are natural transformations.
|(Dom m ~ ~>, Cod m ~ ~>, Category ~>, Functor m) => Category (Kleisli ~> m)|
|Category (Dialg f g)|
|(Category (Dom t), Category (Dom s)) => Category (:/\: t s)|
Whenever objects are required at value level, they are represented by their identity arrows.