Ah, you didn’t mention earlier that it would be a shared mutable object. A mutable object in and of itself wouldn’t cause the function to be impure if the function does not modify it. If the mutable object is shared among other parts of the program however, then the function cannot guarantee referential transparency and it would be impure.