Basic concepts
📄️ Category
To define what a category is, we need to clarify a few terms. In many cases, we will use the term set, a collection of unique elements, and class for collections of sets. The use of the term class may depend on the foundational context, such as Zermelo–Fraenkel set theory or von Neumann–Bernays–Gödel set theory. For simplicity, we will use the term set if its elements have no additional properties and the term class if the elements represent structures with properties. Thus, we can define what a category is.
📄️ Functor
Programmers are familiar with the concept of functor and can recognize generic types such as lists as functors in object-oriented languages because they usually have a map/fmap/select method that transforms a list of type List<int> in a list List<string> through a function $$f : int \rightarrow string$$.
📄️ Natural transformations
In the previous section, we discussed functors, but even more important than functors in category theory are natural transformations. Informally, a natural transformation is a mapping between functors; through a natural transformation, one functor is transformed into another.