ご回答いただいた内容でしっかり納得できました。大変助かりました。
恥ずかしながら、Pure関数とNonPure関数の存在について知りませんでしたが、 これからはこちらも意識しながら実装を進めていこうと思います。