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
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