Sounds almost exactly like Haskell monads, if 'everything that could change' is set equal to 'the entire world'. (Of course monads were invented precisely to transform those annoying side-effects into nice clean function parameters, so this is not at all surprising.)