Category theory is a branch of abstract mathematics concerned with exposing and describing the underlying structure of logical and mathematical systems. Concepts from category theory have proven to be extremely effective as tools for structuring both the semantics of programming languages and programs themselves. Various category theoretic structures are used as tools for abstraction in programming, including functors, monads, and algebras.
Category theory is a branch of abstract mathematics concerned with exposing and describing the underlying structure of logical and mathematical systems. Concepts from category theory have proven to be extremely effective as tools for structuring both the semantics of programming languages and programs themselves. For example, the category theoretic concept of a monad is now pervasive in functional programming. The seminal work of Moggi in the late 1980s showed that effectful notions of computation (such as state, input/output, exceptions) are captured by the concept of a monad. Wadler showed that monads can be used directly in programming as a tool for abstraction. Now various category theoretic structures are used as tools for abstraction in programming, including functors, monads, comonads, applicative functors (monoidal functors), Kan extensions, adjunctions, algebras, coalgebras, monoids, groups, etc. Such techniques are particular popular in the Haskell programming language.