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.
📄️ Tipuri de morfisme
Cănd lucră în teoria categoriilor dar și alte teorii matematice nu avem de multe ori noțiunea de egalitate, însă avem de cele mai multe ori noțiunea de izomorfism care este cel puțin la fel de puternică. În cazul mulțimilor și a funcțiilor
📄️ Construcții universale
În teoria categoriilor ne vor interesa obiecte cu proprietăți speciale. De obicei, ne vom pune întrebarea care dintre aceste obiecte au proprietățile cele mai "mari", respectiv cele mai "mici", acestea fiind obiecte universale cu aceste proprietăți. Chiar dacă pare neintuitiv modul cum ne punem