do-notation is just syntax in theory but in practice
it's difficult to avoid it. Try to write any OpenGL
program in terms of `>>=`,  `>>` and `return`.
I don't like to use `do` knowing that it's just
syntax sugar but sometimes it help a lot.