Functional programming is a programming paradigm which models computations (and thus programs) as the evaluation of mathematical functions. It has its roots in lambda calculus, which was developed by Alonzo Church in his research on computability.
Functional programming has some interesting concepts:
- Higher Order functions
- Referential Transparency
- Memoization & Tail-call Optimization
- Functional Unit Testing