a monad is a monoid in the category of endofunctors