What is functional programming?

Three key concepts comprise the essence of functional programming: first-class functions, pure functions, and immutable data. Together they express a fundamental architectural paradigm on how units of code interact with each other. […]