Category theory/Functor
Definition of a Functor
Given that and are categories, a functor is a pair of mappings (the subscripts are generally omitted in practice).
Axioms
- If in , then in
- If in and in , then
- For all objects in ,
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
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)