¿Por qué?
Mark Semman hace el siguiente razonamiento
- Si compones funciones impuras, siguen siendo el resultado impuro. No pasa nada, todo es impuro
- Si creas un función impura donde funciones de más “bajo nivel” son puras no pasa nada porque que sea mas o menos impura no es relevante
- Pero si la función de “alto nivel” quieres que intente ser pura pero tiene alguna de más bajo nivel impura, hay un problema de diseño, se ha colado un Side-Effects y habría que ver la manera de empujar esa impureza fuera. Hay lenguajes como Haskell que ni si quiera compila