Haskell for some reasons insists that I should only go for "The concept of a monad, which arises from category theory, has been applied by Moggi to structure the denotational semantics of programming languages" and
A monad is a triple (M,unit,⋆) consisting of a type constructor M and two operations of the given
polymorphic types. These operations must satisfy three laws given in Section 3.
We will often write expressions in the form
m ⋆ λa. n
Should I? Really?