Sari la conținutul principal

Transformări naturale

În secțiunea anterioară am discutat despre functori dar mai important decăt funtori în teoria categoriilor sunt transformările naturale. Informal o transformare naturală este mapare între functori, print-o transformare naturală un functor este transformat în altul.

Definiție: Transformare naturală

Dându-se două categorii DD, CC și doi functori FF, G:CDG : C \rightarrow D, o transformare naturală alpha:F    Galpha : F \implies G este o colecție de morfisme care pentru xOb(C)\forall x \in Ob(C) αx=F(x)G(x)Hom(D)\exists \alpha_{x} = F(x) \rightarrow G(x) \in Hom(D), numită componenta lui α\alpha în xx, astfel încât pentru oricare morfism f:xyHom(C)f : x \rightarrow y \in Hom(C) următoarea diagramă comută:

nat

Când ne referim că acestă diagramă comută ne referim la faptul că perechile de morfisme se compun pe diagonală în același morfism, astfel trebuie să fie satisfacută următoarea relație:

αyF(f)=G(f)αx\alpha_y \circ F(f) = G(f) \circ \alpha_x

Compunere

Și în cazul transformărilor naturale acestea se pot compune ca morfismele și functorii. Având functorii FF, GG, H:CDH : C \rightarrow D și transformările naturale α:F    G\alpha : F \implies G, β:G    H\beta : G \implies H atunci va exista mereu o transformare naturală βα:F    H\beta \circ \alpha : F \implies H care are componentele xOb(C)\forall x \in Ob(C) βxαxHom(D)\beta_x \circ \alpha_x \in Hom(D).

Legătura cu programarea

În programare se folosesc des transformările naturale deși nu sunt știute sub acest nume. Cea mai uzuală transformare naturală folosită în programare este parametrizarea tipurilor generice care impune o transformare naturală de la functor identitate către aplicarea unui tip generic care implementează acesta functie. De exemplu, putem vedea cum se aplică acest lucru la clasa generică pentru liste în diagrama următoare:

nat

Morfismele verticale care sunt componentele transformării naturale reprezintă aplicarea tipului generic peste tipurile inițiale iar funcția map/fmap/select din programare funcțională este cea care adaugă existența morfismelor orizontale astfel încât diagrama să comute.

Resurse