FunctionalProgramming - benchristel/benchristel.github.io GitHub Wiki
Functional programming is an approach to the internal design of software characterized by:
- The reification of Routines as Values. In order to qualify as functional, a programming language must let you assign functions to variables, pass them as arguments to other functions, and return them from functions.
- Heavy use of pure Functions that operate on Immutable Data.
- Collocation of State and Process-external Effects near the top of the DependencyGraph.
- Use of algebraic identities, category theory, and other ideas from mathematics to prove that programs have certain desirable properties and that those properties are invariant under certain Refactorings.