# Category theory/Functor

### From HaskellWiki

## Contents |

## 1 Definition of a Functor

Given that and are categories, a *functor* is a pair of mappings (the subscripts are generally omitted in practice).

### 1.1 Axioms

- If in , then in
- If in and in , then
- For all objects
*A*in ,*i**d*_{F(A)}=*F*(*i**d*_{A})

### 1.2 Examples of functors

- , the functor giving the free monoid over a set
- , 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

### 1.3 Functors in Haskell

Properly speaking, a functor in the category Haskell is a pair of a set-theoretic function on Haskell types and a set-theoretic function on Haskell functions satisfying the axioms. However, Haskell being a functional language, Haskellers are only interested in functors where both the object and arrow mappings can be defined and named in Haskell; this effectively restricts them to functors where the object map is a Haskell data constructor and the arrow map is a polymorphic function, the same constraints imposed by the class Functor:

class Functor f where fmap :: (a -> b) -> (f a -> f b)