Category theory studies mathematical structure: categories of objects (intentionally undefined, but could be a set, topological space, groups, or anything else) and the mappings of those objects between categories (morphisms).
You can think of morphisms as the “arrow” that maps between categories. Morphisms can be functions (but don’t have to be) and might be composed (similar to functions).
Category theory is abstract enough to be applied to many concepts outside mathematics. Here are a few examples:
- Functional programming languages: Haskell and other functional programming languages make use of category theory. Objects are types. Morphisms are functions. Monads come straight from category theory.
- Database Schema: Tables as objects, foreign key constraints as morphisms.
- Linear algebra: Vector spaces as objects, linear transformations as morphisms.
- Graph theory: Graphs as objects, graph homomorphisms as morphisms.
- Logic and type theory: propositions as objects, proofs that transform one proposition into another as morphisms. For example, modus ponens as the morphism (“If P, then Q” and P is true, then Q is true) and the implication “if P, then Q” and fact “P is true” as the objects.
- Declarative programming
For more in-depth examples and analysis (yet still accessible), there’s Category Theory for Programmers.