I find it disgusting how proponents of monads are happy at the progress of writing their programs in A Normal Form instead of Continuation Passing Style, yet sneer at those who write programs in Direct Style. Smells like Stockholm Syndrome. Do-notation is brain damage.
Direct Style: f(g(x), h(y)) A-normal Form: let gx = g(x); let hy = h(y); f(gx, hy) Continuation-Passing Style: k => g'(x, gx => h'(y, hy => f'(gx,hy,k) Do-notation is just A-normal form for all monadic function invocations.
Read my blog!