das Wort Monade ist abgeleitet von Monoid,
für jede Implementierung
muß return
und >=>
folgende
Eigenschaften erfüllen:
a -> m b
(>=>) :: (a -> m b) -> (b -> m c) -> (a -> m c) (f >=> g) = \ x -> (f x >>= \ y -> g y)
return
ist (links- und rechts-)neutral
für >=>
>=>
ist assoziativ