Monaden einfach erklärt
Kurz: Eine Monade ist ein Muster, mit dem man Berechnungen mit „Zusatzverhalten” (kein Ergebnis, Fehler, Liste, Seiteneffekt) sauber hintereinanderschaltet.
Genauer: Sie verpackt einen Wert in einen Behälter und liefert eine Operation (bind, flatMap), die eine Funktion auf den Inhalt anwendet und dabei das Zusatzverhalten selbst erledigt.
Im Detail
- Option/Maybe: Wert oder „nichts”.
flatMapführt die nächste Funktion nur aus, wenn ein Wert da ist. So entfallen verschachtelte Nullprüfungen. - Result/Either: Erfolg oder Fehler. Der erste Fehler bricht die Kette ab.
- Liste:
flatMapwendet eine Funktion auf jedes Element an und glättet die Ergebnisse. - Promise/Future: Ein Wert, der erst später da ist.
thenentsprichtbind. - Gesetze: Linksidentität, Rechtsidentität und Assoziativität sorgen dafür, dass sich Ketten vorhersehbar umformen lassen.
- Merkhilfe: Eine Monade ist ein Fließband, an dem jeder Schritt seine Eingabe schon „ausgepackt” bekommt.
Siehe auch: Currying