But how do we get rid of the side effects?
If you come from a purely imperative background, you may be quite confused at this point. Purely functional programming says that you need to eliminate all the side effects. But can you imagine a program without logging? And what would be the use of a web API that cannot connect to a network? If we cannot throw an exception, how do we specify the erroneous behavior of the program?
The side effects specified previously are essential to most modern applications, and it is usually not possible to imagine a reasonable program without side effects.
Therefore, it would be wrong to say that purely functional programming eliminates side effects from your program completely. Instead, it would be more precise to say that it eliminates side effects from your business logic. It pushes side effects away from the parts of your application that matter. The way it usually works with the purely functional style is that your business logic, which encompasses 90% of...