# What actually are Categories?

## 1. A class of objects

The class of objects is the primary defining element of any category.

These objects can basically be anything from "things" like the number 1 up to other categories, so a category of categories.

**Notation**

For a category \(\mathcal{K}\), \(Ob(\mathcal{K})\) or alternatively \(\lVert\mathcal{K}\rVert\) denotes the class of objects in \(\mathcal{K}\).

**Example**

As an example let's use the category of lists \(\mathcal{L}\):

The following applies:

\[Ob(\mathcal{L}) \Leftrightarrow \lVert\mathcal{L}\rVert = \mathbb{L}\]

where \(\mathbb{L}\) is the set of all lists.

The class of objects in the category of lists therefore is the set of all lists, so far so trivial.

## 2. Morphisms

As a seemingly cryptical term, morphisms describe what is called a function in calculus.

A morphism (from greek morphé - form/shape) therefore is something that 'reshapes' one thing into something else.

A morphism always relates to two sets, called domain and co-domain.

**Notation**

A morphism \(f\) would usually be written as

$$f:\mathbb{A}\rightarrow\mathbb{B}$$

where \(\mathbb{A}\) is called the domain of \(f\) and \(\mathbb{B}\) is called the co-domain of \(f\).

**Example**

We define the increment-morphism \(+1\) as follows:

$$+1:\mathbb{Z}\rightarrow\mathbb{Z}$$

$$+1: n\mapsto n+1$$

Domain and co-domain are both the integers \(\mathbb{Z}\) .

Because domain and co-domain are identical in our example, we call \(+1\) an "**endo**morphism".

## 3. Identity-morphism

The identity-morphism (or just identity) is, as the name suggests a morphism. The property that makes it special is simply, that it maps its object to itself.

**Notation**

The identity is noted as \(Id_{\mathcal{X}}\) and the following applies

$$\forall x\in\lVert\mathcal{X}\rVert(Id_{\mathcal{X}}:x\mapsto x)$$

So "For all (\(\forall\)) objects in \(\mathcal{X}\) the identity maps the object to itself".

## 4. The composition

The composition \(\circ\) is a central component in category-theory and describes the possibility to combine (compose) morphisms. The composition of two morphisms produces a new morphism as a result.

**Notation**

The composition of two morphisms \(f\) and \(g\) is noted as follows

$$f:\mathbb{A}\rightarrow\mathbb{B}$$

$$g:\mathbb{B}\rightarrow\mathbb{C}$$

$$g\circ f:\mathbb{A}\rightarrow\mathbb{C}$$

We say "\(g\) composed \(f\)".

**Associativity**

One requirement that category-theory makes for the composition is that it's associative.

That means, that the order of operations must not have an influence on the result, or more formal:

Les \(f\), \(g\) and \(h\) be morphisms in \(\mathcal{K}\),

$$f\circ (g\circ h)\Leftrightarrow (f\circ g)\circ h$$ applies.

**Example**

Let \(half\) be the morphism, which maps a whole number to its half.

Let in addition \(floor\) be the morphism, that maps a real number to the next lower integer.

It follows

$$half:\mathbb{Z}\rightarrow\mathbb{Q}$$

$$floor:\mathbb{R}\rightarrow\mathbb{Z}$$

with \(\mathbb{Q}\subset\mathbb{R}\)

$$floor\circ half:\mathbb{Z}\rightarrow\mathbb{Z}$$ applies

\(floor\) composed \(half\) is therefore an endomorphism.

## Preview

Next time we will look at functors and see why many types present in Kotlin are functors.