A lot of this is sourced from Category Theory for Programming
The power of category theory arises from abstraction: by boiling down constructions to their essence, analogous situations can be formally identified using category theory.
In essence, a simple collection which can be thought of as a graph. Three components
- A collection of objects (nodes)
- A collection of morphisms (edges).
- If is a morphism with source C and target B, we write
- A notion of composition of morphisms.
- If we have and , they can be composed resulting in a morphism
- Composition of morphisms needs to be associative. Typically applied right to left
A category consists of
- A collection of objects, denoted by
- For any given , a collection of morphisms from to denoted by or or even
- An identity morphism for each object such that
- A binary infix composition operator that takes (this can be thought of as )