Thanks Tobias,
Without the associativity law, it would be very hard to determine the current state of the monad.
Since the compiler, on "desugaring" do-blocks, will insert brackets, there is no guarantee that the results are the same as for the brace-less and sugar-free version of the code.