Category Theory – When is a functor uniquely determined where to send objects?


Consider a functor $ F: C to D $ , To let $ F_1 $ a map of the objects of his $ C $ to the objects of $ D $ and $ F_2 $ be a card on the arrows. Under which circumstances? $ F $ clearly determined by $ F_1 $ ?

example 1

In a discussion with friends yesterday the list type constructor [a] in Haskell was educated as an example of an endofunctor $ G $ of "Hask" (the category whose objects are Haskell types and morphisms are values). We suspected that there is exactly one way to send arrows with arrows $ G $ Once you have selected where the types were sent. In other words, let us $ K $ to be an endofunctor of $ text {Hask} $ , If $ K_1 = G_1 $ , then $ K = G $ ,

Example 1 without reference to programming. To let $ W $ the category defined as follows:

The objects of $ W $ are types in a typed lambda calculus with function types $ to $, Products $ times $ to hum $ + $ and isorecurrent types $ mu alpha mathop {.} T $ , The primitive types are $ 0 $ (void) and $ 1 $ (Unit). Note that recursive types exist, but parametric polymorphism does not exist.

The arrows of $ W $ are the values ​​in the typed lambda calculus described above that are functions. For example, $ lambda x. pi_1 (x) $ is an element of Homset $ (1 times 1) $ to $ 1 $ , The values ​​are considered only until equality of extension. So $ lambda x. x + x $ and $ lambda x. 2 * x $ denote the same arrow.

The list functor $ G $ sends the object $ 3 $ to $ mu alpha mathop {.} 1 + 3 times alpha $ … that's a list of values ​​pulled from the type $ 3 $ ,

I think it is the case that the functor laws are limited $ G $ leaving an arrow $ f $ is assigned to an arrow that applies the function $ f $ once to each item in the list and then collate the list in the same order without duplicating or deleting items.

Counterexample 2

To let $ M $ to be a free category with an object $ a $ generated by the non-identity arrow $ f: a to a $ , $ M $ isomorphic to $ mathbb {N} $ , The endofunctor $ J $, defined as $ J_1 (x) = x $ and $ J_2 (x) = 2x $ assigns the objects trivially like the identity-function code, but is not the identity-function code.

Are there a number of decent conditions under which a functor, if satisfied, must be uniquely determined where to send objects?