Functional programming is a programming paradigm that emphasises the use of pure functions to solve problems, i.e., those that always return the same outputs for a given input and has no side effects, thus avoiding modifying any state outside of their scope.

Functional programming treats programs as evaluating mathematical functions and avoids state and mutable data — this is because it’s difficult to exactly reason what state data is in at a given point. The core idea with functional languages is that:1

  • Everything you do with data can be done with functions themselves.
  • Recursion is a primary control structure, usually with no loop construct.
  • There’s a focus on list processing.
  • Discourages or disallows statements.
  • Functional programming worries about what is to be computed instead of how it’s computed.

Key concepts

Resources

  • Functional Programming in Python, by David Mertz

Languages

Many languages are not purely functional, but still support functional constructs.

Purely functional languages:

See also

Footnotes

  1. From Functional Programming in Python, by David Mertz.