Transforming side-effects using monads

Suppose a program in a typical language

T t = e1();
e2(t);
U u = e3(t);
V v = e4(t, u);
return e5(u, v);

We are going to change some of the syntax rules.