Functional programming produces programs by composing mathematical functions and avoids shared state & mutable data
-Pure functions / function purity.
-Avoid side-effects.
-Simple function composition.
-Examples of functional languages: Lisp, ML, Haskell, Erlang, Clojure, Elm, F Sharp, OCaml, etc...
-Mention of features that support FP: first-class functions, higher order functions, functions as arguments/values.