functor
If a category is a world of objects-and-arrows, a functor is a map between worlds that respects all of that structure. It sends each object of one category to an object of another, and each arrow to an arrow, in a way that preserves the bookkeeping: identities go to identities and composites go to composites. A functor is exactly the right notion of “homomorphism of categories,” and most natural mathematical constructions — taking the fundamental group, forming a free group, tensoring with a fixed module — are functors.
Precisely, a functor F : C -> D assigns to each object A in C an object F(A) in D, and to each morphism f : A -> B a morphism F(f) : F(A) -> F(B), such that F(id_A) = id_{F(A)} and F(g ∘ f) = F(g) ∘ F(f). This is a covariant functor. A contravariant functor reverses arrows: F(f) : F(B) -> F(A) and F(g ∘ f) = F(f) ∘ F(g); equivalently it is a covariant functor C^op -> D. The dual space construction V ↦ V* is the prototypical contravariant example.
Functors come with their own adjectives describing how they act on Hom-sets. F is faithful if each induced map Hom(A, B) -> Hom(F(A), F(B)) is injective, full if it is surjective, and fully faithful if it is bijective. A forgetful functor like Grp -> Set is faithful but not full. Fully faithful functors are the key to recognizing equivalences of categories, since a fully faithful and essentially surjective functor is an equivalence.
The functor GL : CRing -> Grp sends a commutative ring R to its group of invertible 2-by-2 matrices GL(2, R) and a ring homomorphism R -> S to the induced group homomorphism GL(2, R) -> GL(2, S) applied entrywise. Functoriality is exactly the statement that this respects composition of ring maps.
A construction is a functor precisely when it acts on maps, not just objects.