Isn’t the problem that the intent
” Certain functions, designated pure functions,
return the same value each time they are called with the same values as actual
parameters”
isn’t the same as saying that you can’t access shared variables, files and so on? As long as you just write to them the intent is fulfilled.