Answer:
Functions should be as pure as possible following a pattern of Input->Processing->Output
To model algorithms in a state-machine like format
Code free of side effects
Step-by-step explanation:
Functional programming is a popular concept in most popular programming languages such as Lisp that makes use of functions in separating code that aims to define and solve a particular problem which is part of a bigger problem. Functional programming focuses on what to solve, ie what is the problem rather than how do we solve it. It divides up code in meaningful blocks that makes it a lot more understandable, allowing big problems to be solved in tiny bits and not an overwhelming whole. Functional programming adopts the state-machine like format as it makes use of input and alters state as necessary(not hard coded). It also removes side effects issues that may be experienced when a function affects or mutates variables(global variables) that may be outside its block.