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

  1. A collection of objects (nodes)
  2. A collection of morphisms (edges).
    • If is a morphism with source C and target B, we write
  3. 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

Categories

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 )

See also: functional programming, Homotopy Theory