> OO is not about state
OO is very much about state, and that's the fundamental difference between non-FP languages and FP.
a1 = object.f(b);
a2 = object.f(b);
If a1 != a2 or f performs any side effects at all you've got state. Doesn't matter if it's "private" or "hidden". Your functions are not referentially transparent.It also doesn't matter if your language implements OO in terms of message passing (Smalltalk, Erlang) or method calling (Java, C#, ...).