Monade (Kategorientheorie)

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

Eine Monade ist im mathematischen Teilgebiet der Kategorientheorie eine Struktur, die gewisse formale Ähnlichkeit mit den Monoiden der Algebra aufweist.

Inhaltsverzeichnis

[Bearbeiten] Definition

Eine Monade ist ein Tripel (T,η,μ) aus

  • einem Funktor T von einer Kategorie K in sich selbst, d.h.
    T\colon K \to K
  • einer natürlichen Transformation \eta\colon 1_K \to T (dabei steht 1K für den Identitätsfunktor K\to K)
  • einer natürlichen Transformation \mu\colon T^2 \to T (dabei steht T2 für T\circ T),

so dass die folgenden Bedingungen erfüllt sind:

Bild:Monad multiplication.svg
  • \mu\circ \eta T = \mu\circ T\eta = 1, d. h. das folgende Diagramm kommutiert:
Bild:Monad unit.svg

Explizit bedeutet die Kommutativität der Diagramme, dass für jedes Objekt X in K die beiden Diagramme

Bild:Monad multiplication explicit.svg und Bild:Monad unit explicit.svg

kommutieren. Die erste Bedingung ist analog zum Assoziativgesetz bei Monoiden, die zweite zur Existenz eines neutralen Elementes.

[Bearbeiten] Beispiele

[Bearbeiten] Adjungierte Funktoren

Ist ein Funktor F\colon C\to D zu einem Funktor G\colon D\to C linksadjungiert, und sind

\eta\colon 1_C\to GF bzw. \varepsilon\colon FG\to 1_D

Einheit bzw. Koeinheit der Adjunktion, so ist (T,η,μ) mit

  • T=GF\colon C\to C
  • \mu=G\varepsilon F, also \mu_X=G(\varepsilon_{F(X)}) für Objekte X\in\mathrm{Ob}(C)

eine Monade.

[Bearbeiten] Listen

Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.

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:

  1. Konstruktor für „Listen-Typen“:
    • Funktor T(X) = \{ [x_1, ..., x_n] \mid n\in\N, x_1, ..., x_n \in X \} (die Menge aller Listen, deren Elemente aus X kommen, für eine beliebige Menge X)
    • sowie für eine Abbildung f : X \to Y zwischen zwei Mengen die entsprechende Abbildung T(f) : T(X) \to T(Y) zwischen den Listenmengen mit T(f)([x1,...,xn]) = [f(x1),...,f(xn)]
  2. Konstruktor für einelementige Listen: ηX(x) = [x]
  3. Konkatenation von Listen: \mu_X([l_1, ..., l_n]) = l_1 \cdot ... \cdot l_n, also \mu_X([[x_{11}, ... x_{1m_1}], ..., [x_{n1}, ..., x_{nm_n}]]) = [x_{11}, ... x_{1m_1}, ..., x_{n1}, ..., x_{nm_n}] - dies ist gewissermaßen das (einstufige) Flachklopfen einer Liste von Listen.

Die Aussage der Axiome lassen sich entsprechend auf das Listenbeispiel übertragen:

  1. Wird das Axiom μTμ = μμT auf das Beispiel angewandt, ergibt sich für eine Menge X zunächst \mu \circ \mu_{T(X)} = \mu \circ T(\mu_X). Auf das Listenbeispiel übertragen ergibt sich für l \in T(T(T(X))) auch μXT(X)(l)) = μX(TX)(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.
  2. 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 μXT(X)([x1,...,xn])) = μX([[x1,...,xn]]) = [x1,...,xn] = μX([[x1],...,[xn]]) = μX(TX)([x1,...xn])).

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.

[Bearbeiten] Anwendung

Monaden werden u.a. in der Informatik in der funktionalen Programmierung verwendet, z.B. als Listen- oder IO-Monade in Haskell, siehe Monade (Typkonstruktion)

[Bearbeiten] Literatur

  • Saunders Mac Lane, Categories for the Working Mathematician. Springer-Verlag, Berlin 1971. ISBN 3-540-90035-7

[Bearbeiten] Weblinks

Persönliche Werkzeuge
Andere Sprachen