A homomorphism is a map that preserves selected structure between two algebraic structures, with the structure to be preserved being given by the naming of the homomorphism. Particular definitions of homomorphism include the following:
A semigroup homomorphism is a map that preserves an associative binary operation.
A monoid homomorphism is a semigroup homomorphism that maps the identity element to the identity of the codomain.
A group homomorphism is a homomorphism that preserves the group structure. It may equivalently be defined as a semigroup homomorphism between groups.
A ring homomorphism is a homomorphism that preserves the ring structure. Whether the multiplicative identity is to be preserved depends upon the definition of ring in use.
A linear map is a homomorphism that preserves the vector space structure, namely the abelian group structure and scalar multiplication. The scalar type must further be specified to specify the homomorphism, e.g. every R-linear map is a Z-linear map, but not vice versa.
An algebra homomorphism is a homomorphism that preserves the algebra structure.
A functor is a homomorphism between two categories.
Is it clear, now?
I am uncomfortable with “A functor is a homomorphism between two categories.”. Homomorphism preserves some structure, and while categories have object with structure, I’m unclear what they have themselves. (I shouldn’t anthropomorphize, but some categories cute.)
Anyway, one of the developers (Steenrod) called “abstract nonsense”.