Impure functions
If you decided to completely forego all kinds of side effects, your programs would only be able to work with hardcoded inputs... and wouldn't be able to show you the calculated results! Similarly, most web pages would be useless; you wouldn't be able to do any web services calls, or to update the DOM; you'd have static pages only. And, for server-side JS, your Node.JS code would be really useless, not being able to do any I/O...
Reducing side effects is a good goal in FP, but we cannot go overboard with it! So, let's think how to avoid using impure functions, if possible, and how to deal with them if not, looking for the best possible way to contain or limit their scope.
Avoiding impure functions
Earlier in this chapter, we saw the more common reasons for impure functions. Let's now consider how we can minimize their number, if doing away with all of them isn't really feasible.
Avoiding the usage of state
With regard to the usage of global state --both getting and setting it...