Portability  nonportable 

Stability  experimental 
Maintainer  sjoerd@w3future.com 
Safe Haskell  SafeInferred 
Category
An instance of Category k
declares the arrow k
as a category.
Category (>)  The category with Haskell types as objects and Haskell functions as arrows. 
Category Cat 

Category Unit 

Category Void 

Category AdjArrow  The category with categories as objects and adjunctions as arrows. 
Category Boolean 

Category Simplex  The (augmented) simplex category is the category of finite ordinals and order preserving maps. 
Category k => Category (Op k) 

Category (f (Fix f)) => Category (Fix f) 

Category (Kleisli m)  The category of Kleisli arrows. 
(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. 
(Category c1, Category c2) => Category (:>>: c1 c2)  The directed coproduct category of categories 
(Category c1, Category c2) => Category (:++: c1 c2)  The coproduct category of categories 
Category (MonoidAsCategory f m)  A monoid as a category with one object. 
Category (Dialg f g)  The category of (F,G)dialgebras. 
(Category (Dom t), Category (Dom s)) => Category (:/\: t s)  The comma category T \downarrow S 
Whenever objects are required at value level, they are represented by their identity arrows.
Opposite category
Category k => Category (Op k) 

HasBinaryProducts k => HasBinaryCoproducts (Op k)  Binary products are the dual of binary coproducts. 
HasBinaryCoproducts k => HasBinaryProducts (Op k)  Binary products are the dual of binary coproducts. 
HasTerminalObject k => HasInitialObject (Op k)  Terminal objects are the dual of initial objects. 
HasInitialObject k => HasTerminalObject (Op k)  Terminal objects are the dual of initial objects. 
Category k => CartesianClosed (Presheaves k)  The category of presheaves on a category 