Kategorientheorie ist eine sehr abstrakte Sprache für Struktur und Zusammensetzung. Statt zu fragen, was Objekte innerlich sind, schaut sie nur auf die Pfeile zwischen ihnen und darauf, wie sich Pfeile verketten. Diese Verschiebung des Blicks, weg vom Inhalt der Dinge, hin zu ihren Beziehungen, macht sie zu einer vereinheitlichenden Sprache über viele Gebiete der Mathematik und der funktionalen Programmierung.
Eine Kategorie besteht aus zwei Zutaten: Objekten (gezeichnet als Punkte) und Morphismen oder Pfeilen (gezeichnet als Linien mit Richtung) zwischen ihnen. Ein Pfeil f: A → B „geht von A nach B". Was A und B genau sind, ist egal, es kann sich um Mengen, Zahlen, Datentypen oder ganze Räume handeln.
Das Herzstück: Pfeile lassen sich hintereinanderschalten. Geht f von A nach B und g von B nach C, dann gibt es immer auch einen direkten Pfeil von A nach C, geschrieben g ∘ f („g nach f"). Diese Komposition muss assoziativ sein: Bei drei Pfeilen ist es egal, welche zwei man zuerst zusammenfasst.
Jedes Objekt hat außerdem einen Identitätspfeil auf sich selbst (id: A → A), der nichts verändert. Verkettet man ihn mit einem anderen Pfeil, kommt genau dieser andere Pfeil heraus, wie das Multiplizieren mit 1. Objekte, Komposition und Identität, mehr braucht eine Kategorie nicht.
Ein Funktor ist eine strukturerhaltende Übersetzung von einer Kategorie in eine andere. Er bildet Objekte auf Objekte und Pfeile auf Pfeile ab, so dass Komposition und Identität erhalten bleiben. Funktoren sind das Werkzeug, mit dem die Kategorientheorie Zusammenhänge zwischen ganz verschiedenen Gebieten sichtbar macht, denn „gleiche Pfeilstruktur" bedeutet oft „gleiche tiefe Idee".
Kategorientheoretiker beweisen vieles mit kommutativen Diagrammen. „Kommutativ" heißt: Egal welchen Pfeilweg man durch das Diagramm nimmt, das Ergebnis ist dasselbe. Ein Quadrat kommutiert, wenn der Weg oben-herum gleich dem Weg unten-herum ist.
| Gebiet | Was die Kategorie liefert |
|---|---|
| Mathematik | eine Sprache, die Algebra, Topologie, Logik verbindet |
| Funktionale Programmierung | Typen als Objekte, Funktionen als Pfeile (Haskell, Scala) |
| Informatik | Komposition als Grundprinzip sauberer Software |
| Logik | enge Verbindung zu Beweisen und Typen |
Der Reiz liegt in der Abstraktion: Wer die Pfeilstruktur eines Problems versteht, erkennt dieselbe Struktur sofort in ganz anderen Zusammenhängen wieder. Kategorientheorie berührt so die formale Logik und die Grundlagen der Programmierung.