Monade

Angenommen, ein abstrakter Datentyp ist parametrisiert mit einer Funktion M, die einen Typ auf einen anderen Typ abbildet. Der abstrakte Datentyp hat die Funktionen return und bind mit den Signaturen

return: α → M(α) und
bind: M(α) ✕ (α → M(β)) → M(β).


Der abstrakte Datentyp ist eine Monade, wenn die Funktionen die folgenden Eigenschaften haben:

Linksidentität - bind(return(a), f) = f(a),
Rechtsidentität - bind(m, return) = m und
Assoziativität - bind(bind(m, f), g) = bind(m, λa.bind(f(a), g)).


Siehe auch Lambda-Kalkül und algebraische Spezifikation.


Quelle

Miran Lipovaca
"Learn You a Haskell for Great Good"
no starch press 2011
ISBN 978-1-59327-283-8
Seiten 272, 292ff