Purity can be defined very nicely against the arrows in a compositional semantics of a language and then effects follow as reasons for impurity.<p>This is absolutely just a choice. It all ends up depending upon how you define equality of arrows. You could probably even get weirder notions of purity if you relax equality to a higher-dimensional one.<p>So, it&#x27;s of course arbitrary in the sense that you can just pick whatever semantics you like and then ask whether or not purity makes much sense there. You point out that &quot;passage of time&quot; is an impurity often ignored and this is, of course, true since we&#x27;re talking (implicitly) about &quot;Haskell purity&quot; which is built off something like an arm-wavey Bi-CCC value semantics.<p>A much more foundational difference of opinion about purity arises from whether or not you allow termination.<p>I&#x27;d be interested to see a semantics where setting mutable stores is sufficiently ignored by the choice of equality as to be considered a non-effect. I&#x27;m not sure what it would look like, though.