– based on mathematical functions

– use conditional expressions and recursion to perform computation

– supports higher-order functions and lazy evaluation features

– functions and functional calls are directly used by the languages

β†’ no flow Controls (loops), no conditional statements (If-Else, Switch)

– Iteration is implemented through recursion

β†’ keeps the variables immutable (== state cannot be changed after it’s created)

Functional Programming vs. Object-oriented Programming

oop vs functional

Categorized into two groups

Pure Functional Languages

support only the functional paradigms

– it always returns the same result for same argument values

– It does not cause any observable side effects (like modifying an argument, outputting something …)

– are stable, consistent, and predictable

Impure Functional Languages

-support the functional paradigms and imperative style programming

pure vs impure