> An "if" statement or "map" function also has inputs and outputs and probably some internal state due to implementation details, but we don't say they represent state either.
They absolutely are in the context of a program and not just abstract expression, which never matters. The distinction strikes me as meaningless. At the very least it's worth qualifying with "mutable state" if that's the attribute of state you care about. There's still "constant expressions" as other forms of values and "statically initialized values" as other forms of state.