Real world applications of category theory

The blog entry "Why Category Theory Matters" by Robert Seaton ends with a quite impressive reference list of applications of category theory to the sciences:

  • Category theory has been used to study grammar and human language.
  • In building a spreadsheet application.
  • As a descriptive tool in neuroscience.
  • In the analysis and design of cognitive neural network architectures.
  • In programming languages, especially Haskell and most famously monads, but also, for instance, a typed assembly language and work on the typed lambda calculus.
  • Generating program optimizations.
  • To model systems of interacting agents.
  • To generalize sorting algorithms.
  • To understand collaborative text editing. See also this blog.
  • To understand optimal play in sequential games like chess.
  • To formalize the notion of algorithm.
  • In the study of analogy.
  • As “a language for experimental design patterns” and “a new vocabulary in which to think and communicate.”
  • In definitions of emergence and discussions of biology.

Category theory is far from the engineering textbook level, for now. On the research level, there are a lot of instances where category theory is applied in engineering context, from electrical to biomedical engineering. Beware though: these usually come from people who try to apply category theory, rather than from people who try to solve an engineering problem and find category theory useful in doing so.


I recently wrote some software to simulate a real world physical system to show that a hardware technology has a chance of doing what we want it to do. That project has grown to a pretty substantial piece of engineering with sizable budget. I wrote the simulation in a programming language whose syntax could be described as the "internal language" of a Cartesian closed category with a bunch of extensions, many of which were categorically motivated.

Sadly I eventually had to switch to Python because I couldn't find libraries for everything I wanted.

The language was Haskell.