Functional programming basically means using functions in a certain way to write a logical piece of code. Most languages allow functions to be really complex and hard to understand. Functional programming, however, puts constraints on functions in order to be able to compose them and mathematically prove something about their behaviour.
One of the constraints is the regulation of communication with the external world (for instance, side effects, such as data fetching). Some assert that no matter how many times we call a function with the same arguments, it will return the exact same value. All of these constraints will give us certain benefits. You can name some of these benefits already, such as time-traveling, which uses pure reducers.
In this chapter, we will learn a bunch of useful functions that will ease us into Chapter 9, Elements of...