- Monade (Kategorientheorie)
-
Eine Monade ist im mathematischen Teilgebiet der Kategorientheorie eine Struktur, die gewisse formale Ähnlichkeit mit den Monoiden der Algebra aufweist.
Inhaltsverzeichnis
Definition
Eine Monade ist ein Tripel (T,η,μ) aus
- einem Funktor T von einer Kategorie K in sich selbst, d.h.
- einer natürlichen Transformation (dabei steht 1K für den Identitätsfunktor )
- einer natürlichen Transformation (dabei steht T2 für ),
so dass die folgenden Bedingungen erfüllt sind:
- , d. h. das folgende Diagramm kommutiert:
- , d. h. das folgende Diagramm kommutiert:
Explizit bedeutet die Kommutativität der Diagramme, dass für jedes Objekt X in K die beiden Diagramme
und kommutieren. Die erste Bedingung ist analog zum Assoziativgesetz bei Monoiden, die zweite zur Existenz eines neutralen Elementes.
Beispiele
Adjungierte Funktoren
Ist ein Funktor zu einem Funktor linksadjungiert, und sind
- bzw.
Einheit bzw. Koeinheit der Adjunktion, so ist (T,η,μ) mit
- μ = GεF, also μX = G(εF(X)) für Objekte
eine Monade.
Dies ist im gewissen Sinn auch schon das einzige Beispiel, da jede Monade auf diese Weise entsteht, jedenfalls bis auf Isomorphie: Wir betrachten dazu für eine Monade (T,η,μ) die Kategorie KT der sogenannten T-Algebren. Objekte dieser Kategorie sind Paare (X,α) wobei X ein Objekt von K und ein Morphismus in K ist. Ein Morphismus ist ein Morphismus in K so, dass gilt. Wir haben Funktoren - den Vergissfunktor, der die Zusatzstruktur vergisst - und - den "freie Algebra"-Funktor - der auf Objekten durch FT(X) = (TX,μX) und auf Morphismen durch FT(f) = Tf wirkt (Tf ist wegen der Monadeneigenschaften wirklich ein Morphismus ). FT und GT sind adjungiert, die Einheit der Adjunktion ist durch die Einheit gegeben, die Koeinheit durch . Die durch diese Adjunktion induzierte Monade (T,η,μT) ist gerade die Ausgangsmonade, denn wir haben
- .
Listen
Ein Beispiel für eine Monade sind Listen. Wenn [x1,...,xn] die Liste mit den Elementen x1 bis xn bezeichnet, dann stellt das folgende Tripel (T,η,μ) eine Monade über der Kategorie der Mengen dar:
- Listen-Funktor:
- Auf der Objektebene ergibt die Menge aller Listen, deren Elemente aus X kommen, für eine beliebige Menge X.
- Für eine Abbildung zwischen zwei Mengen ergibt T die entsprechende Abbildung zwischen den Listenmengen mit T(f)([x1,...,xn]) = [f(x1),...,f(xn)]
- Konstruktor für einelementige Listen: ηX(x) = [x]
- Konkatenation von Listen: , also - dies ist gewissermaßen das (einstufige) Flachklopfen einer Liste von Listen.
Die Aussage der Axiome lassen sich entsprechend auf das Listenbeispiel übertragen:
- Wird das Axiom μTμ = μμT auf das Beispiel angewandt, ergibt sich für eine Menge X zunächst . Auf das Listenbeispiel übertragen ergibt sich für auch μX(μT(X)(l)) = μX(T(μX)(l))), d.h. dass es bei mehrfach verschachtelten Listen egal ist, ob von innen oder von außen flachgeklopft wird, was bei Listen offensichtlich erfüllt ist.
- Das zweite Axiom sagt in diesem Beispiel aus, dass es beim Hinzufügen einer Listenebene egal ist, ob dies innen oder außen passiert, sofern danach flachgeklopft wird - es ist .
Diese Monade gehört zu einem adjungierten Funktorpaar F,G (wie oben) zwischen den Kategorien der Mengen bzw. Halbgruppen. F ordnet einer Menge die freie Halbgruppe über dieser Menge zu, G einer Halbgruppe die zugrundeliegende Menge.
Anwendung
Monaden werden u.a. in der Informatik in der funktionalen Programmierung verwendet, z.B. als Listen- oder IO-Monade in Haskell, siehe Monade (Informatik)
Literatur
- Saunders Mac Lane, Categories for the Working Mathematician. Springer-Verlag, Berlin 1971. ISBN 3-540-90035-7
Weblinks
- einem Funktor T von einer Kategorie K in sich selbst, d.h.
Wikimedia Foundation.