Functor

This is an old revision of this page, as edited by MarkGall (talk | contribs) at 16:26, November 13, 2009. It may differ significantly from current revision.

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 traditional terminology for the above is a "covariant functor", to distinguish it from "contravariant functors", which reverse the direction of compositions, and instead satisfy

 .

We will see an example of this below.

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.

A simple example arises in the category of vector spaces. Fix a vector space  . We can define a functor   by

  1. An object   (that is a vector space) is sent to  , the vector space of linear maps from   to  . We can think of these linear maps as matrices.
  2. A linear transformation   (i.e., an element of   is sent to a linear transformation   by setting  . I other words, the image of   is supposed to be a linear transformation from   to  : it is defined by sending a linear transformation   to  .

We can similarly obtain a contravariant function   by

  1. An object   is sent to the vector space of linear maps  .
  2. A map   is sent to a linear map   by  . Given a linear map from B to V, we get one from A to V by composing with  . Note that morphisms now compose in the opposite direction: that is why this is a contravariant functor.

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)".