There are two common questions we hear from outside the functional programming community: ‘What is functional programming?’, and ‘Why should I use it?’. I have struggled to find good answers to these questions. In this talk, we will look at the existing definition and I will present a formulation I’ve been working on that attempts to answer both of these questions, and also why functional programming is so special.