&gt; We don&#x27;t trip over ourselves when writing imperative code<p>Speak for yourself. Though I guess I&#x27;m more concerned with refactoring than with writing. In particular in imperative code it&#x27;s very hard to tell the difference between semantically important ordering and accidental ordering.<p>&gt; when we do, it mostly has to do with IO or other OS state, and monads won&#x27;t help you there.<p>Yes they will? It&#x27;s very normal to encapsulate something of that nature with a monad.