class Monad m where
    return :: a -> m a
    (>>=)  :: m a -> (a -> m b) -> m b
Wenn m ein Endo-Funktor ist, 
dann gilt in der Kleisli-Kategorie von m:
Identität 
ida ist return :: a -> m a
Komposition ist:
import Control.Monad
(>=>) :: Monad m
    => (a -> m b) -> (b -> m c) -> (a -> m c)
f (>=>) g = \ x -> ( f x ) >>= g