I do Haskell as my job. In general I would much rather have a function in the vein of `DeltaState -&gt; [SoundEffects]` than another layer of effects. If the sounds aren&#x27;t dependent on <i>by what means</i> the state changed, but only on <i>what the change in state is</i>, then you may as well factor out the sound logic. Conversely, since I want to keep the program well factored I endeavor to separate concerns into pure computations as much as possible and minimize effects.