As monadic values explicitly represent not only computed values, but computed "effects", a monadic expression can be substituted with its value in referentially transparent positions, much like pure expressions can be, allowing for many techniques and optimizations based on rewriting.