OO: 'state is hard, let's make it easier by encapsulating it with only the procedures that need to manipulate it'
FP: 'state is hard, let's not do it unless we absolutely have to'
FP: 'state is hard, let's not do it unless we absolutely have to'
What's really interesting is Rust arrived at a similar destination, I assume as a natural byproduct of pushing for memory+thread safety. State isn't discouraged, but you get explicit owner(s) of data who lend it out to others who are readonly by default, and explicit when they will modify the reference you gave them.