Zurück zur Übersicht

Begriff

Monad Transformer

Computer Science Functional Programming S4
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Monaden sind toll. Maybe Monade für Fehler. State Monade für Speicher. IO Monade für Nebenwirkungen. Aber was, wenn ich alles gleichzeitig brauche? Einen "State, der Fehler werfen kann und IO macht"? Monaden lassen sich nicht einfach stapeln (Monad (State (Maybe a)) geht so nicht). Lösung: Monad Transformers. Sie sind wie Zwiebelschalen. StateT (MaybeT IO) a. Jeder Transformer (StateT, MaybeT) wickelt eine neue Fähigkeit um die innere Monade. Am Ende hast du einen "Mega-Monad", der alles kann.

Merksatz: Ein Konstrukt in der funktionalen Programmierung, das eine gegebene Monade in eine neue Monade transformiert, die zusätzliche Effekte (z. B. State, Error, Reader) bereitstellt, und so die Kombination mehrerer Monaden ermöglicht.


Quick-Check

  1. Reihenfolge?
    Wichtig! StateT (ExceptT) ist anders als ExceptT (StateT). Wenn ein Fehler passiert: Wird der State zurückgesetzt (Transaktion) oder behalten (Log)? Die Schachtelung bestimmt die Semantik.
  2. Performance?
    Transformer kosten Performance (Allokationen, Pointer Chasing). In Scala/Java sehr teuer. In Haskell (dank GHC Optimierungen) oft akzeptabel.
  3. Alternativen?
    Free Monads, Tagless Final, Effect Systems. Aber Transformer sind der Industriestandard in Haskell.