Functional programming is a programming paradigm based upon building abstractions using functions, isolating side effects and mutable state. Executing pure functions is thread-safe.