The motives behind the using functional programming paradigm include:
1. Programming requirements may be better defined as a series of abstractions based on functions rather than a more complex series of steps.
2. Broader abstractions can lead to fewer errors during implementation.
3. Functions can be applied at any level of data abstraction making them highly reusable within a program.
4. Functional code is easier to test and debug as each function cannot have any side effects, so only needs testing once.
5. There are no concurrency issues as no data is modified by two threads at the same time.
6. In multi-processor environments the sequence that functions are evaluated in is not critical.