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 funcția map/fmap/select a tipurilor generice care impune o tranformare 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 compentele transformării naturale reprezintă aplicarea tipului generic peste tipurile initiale iar funcția map este cea care adaugă existența morfismelor orizontale astfel încât diagrama să comute.

Resurse