Functional programming


  • Immutability (variables don't change)
  • Separation of data and functions.
  • Pure functions (no side-effects)
  • First-class functions (you can assign function to another name and you can pass function to other functions and return them as well. We can also manipulate functions)
  • Higher order functions: a functions that either takes a function as a parameter or returns a function as a parameter.