# Category theory/Functor

## Definition of a Functor

Given that ${\mathcal {A}}$ and ${\mathcal {B}}$ are categories, a functor $F:{\mathcal {A}}\to {\mathcal {B}}$ is a pair of mappings $(F_{objects}:\mathrm {Ob} ({\mathcal {A}})\to \mathrm {Ob} ({\mathcal {B}}),F_{arrows}:\mathrm {Ar} ({\mathcal {A}})\to \mathrm {Ar} ({\mathcal {B}}))$ (the subscripts are generally omitted in practice).

### Axioms

1. If $f:A\to B$ in ${\mathcal {A}}$, then $F(f):F(A)\to F(B)$ in ${\mathcal {B}}$
2. If $f:B\to C$ in ${\mathcal {A}}$ and $g:A\to B$ in ${\mathcal {A}}$, then $F(f)\circ F(g)=F(f\circ g)$
3. For all objects $A$ in ${\mathcal {A}}$, $id_{F(A)}=F(id_{A})$

### Examples of functors

• $\mathrm {Free} :\mathrm {Set} \to \mathrm {Mon}$, the functor giving the free monoid over a set
• $\mathrm {Free} :\mathrm {Set} \to \mathrm {Grp}$, the functor giving the free group over a set
• Every monotone function is a functor, when the underlying partial orders are viewed as categories
• Every monoid homomorphism is a functor, when the underlying monoids are viewed as categories

### Functor operations

• For all categories ${\mathcal {C}}$, there is an identity functor $Id_{\mathcal {C}}$ (again, the subscript is usually ommitted) given by the rule $F(a)=a$ for all objects and arrows $a$.
• If $F:{\mathcal {B}}\to {\mathcal {C}}$ and $G:{\mathcal {A}}\to {\mathcal {B}}$, then $F\circ G:{\mathcal {A}}\to {\mathcal {C}}$, with composition defined component-wise.

These operations will be important in the definition of a monad.

### The category Cat

The existence of identity and composition functors implies that, for any well-defined collection of categories $E$, there exists a category $\mathrm {Cat} _{E}$ whose arrows are all functors between categories in $E$. Since no category can include itself as an object, there can be no category of all categories, but it is common and useful to designate a category small when the collection of objects is a set, and define Cat to be the category whose objects are all small categories and whose arrows are all functors on small categories.

class Functor f where