It lets you refine when and where it happens more than other methods of restricting state change, such as in imperative OOP.