Coupling and cohesion are key quality indicators. We strive for systems highly cohesive and loosely coupled, but high doesn’t mean pure. The same goes with functional programming, we aim for isolating and reducing side effects, but we need them unless we want a useless system. It’s good to modularise our systems, so whenever those modules ...