Concepte de bază
📄️ Categorie
Pentru a defini ce este o categorie, trebuie să clarificăm câțiva termeni. În multe cazuri, vom folosi termenul de mulțime (set), o colecție de elemente unice, și clasă (class) pentru colecții de mulțimi. Utilizarea termenului de clasă poate depinde de contextul fondațional, cum ar fi teoria mulțimilor Zermelo-Fraenkel sau teoria mulțimilor von Neumann–Bernays–Gödel. Pentru simplitate, vom folosi termenul de mulțime dacă elementele sale nu au proprietăți suplimentare și termenul de clasă dacă elementele reprezintă structuri cu proprietăți. Astfel, putem defini ce este o categorie.
📄️ Functor
Programatorii sunt obișnuiți cu conceptul de functor și pot recunoaște tipuri generice, cum sunt listele, ca functori în limbajele orientate pe obiecte, deoarece de obicei au o metodă map/fmap/select care pot transforma o listă de tip List într-o listă List printr-o funcție $$f : int \rightarrow string$$.
📄️ 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.