Difference between revisions of "Functor"
(Computer science use of the term. Should there be a disambiguation page?) |
(→In Pure Mathematics: Mention contravariance. Mathematical functors are cool; computer language functors less so.) |
||
| Line 6: | Line 6: | ||
:<math>F(g \circ f) = F(g) \circ F(f)</math>. | :<math>F(g \circ f) = F(g) \circ F(f)</math>. | ||
Functors are the fundamental objects used to relate structures between different categories. | Functors are the fundamental objects used to relate structures between different categories. | ||
| + | |||
| + | The above is sometimes called a "covariant functor", to distinguish it from the less common "contravariant functor". In a contravariant functor, the composition order is reversed: | ||
| + | :<math>F(g \circ f) = F(f) \circ F(g)</math>. | ||
=== Examples === | === Examples === | ||
Revision as of 19:26, October 1, 2009
The term functor has two distinct meanings.
In Pure Mathematics
In category theory, a functor is a map between categories satisfying certain relations. Functors, in a sense, provide for categories what group homomorphisms do for groups. To be precise, a function between two categories associates to each object an object , and to each morphism a morphism such that:
- .
Functors are the fundamental objects used to relate structures between different categories.
The above is sometimes called a "covariant functor", to distinguish it from the less common "contravariant functor". In a contravariant functor, the composition order is reversed:
- .
Examples
Algebraic topology was the first field in which the usefulness of the notion of a functor was recognized. A basic example is the fundamental group functor . The action on objects is defined by sending a topological space to its fundamental group . Recall that a map between two topological spaces induces a map by . Set so defined. The functoriality of boils down to the fact that , that is, the identity map on a topological space induces the identity map on its fundamental group, together with the fact that , explained at fundamental group.
In Computer Science
In computer science, the term "functor" is short for "function operator", also called a "function object". It is essentially a class method with no name. Many modern programming languages support this. For example, in C++ one can define a function object with the "operator()" notation, that is, a definition of what parentheses mean after an object.
class C {
public:
int operator()(int i, int j) { return k+i*j; }
int k;
.....
};
.....
C MyObject;
MyObject.k = 3;
int r = MyObject(4,5);
.....
We have effectively defined a nameless method for class C. Instead of making a named invocation like "MyObject.func(4,5)", we just write "MyObject(4,5)".