functional-programming Tutorial

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
  • Purity
  • Recursion
  • Laziness
  • Referential Transparency
  • Currying
  • Functors
  • Monads
  • Memoization & Tail-call Optimization
  • Functional Unit Testing

Some examples of functional programming languages are Lisp, Haskell, Scala and Clojure, but also other languages, like Python, R and Javascript allow to write (parts of) your programs in a functional style. Even in Java, functional programming has found its place with Lambda Expressions and the Stream API which were introduced in Java 8.