Too Long; Didn't Read
Functional programming is a programming paradigm where software is written by applying and composing functions. FP is a way for us to think of problems as a matter of interconnecting functions. For practicality, I'll omit specific mathematical properties that define these concepts. Immutability means that something cannot be modified. A mutation can be problematic because it makes tracing the state changes in our application hard or even impossible. You don't want to call a function in a third party library and not know if it will modify the object you're passing.