What is functional programming? a programming paradigm (worldview, mindset) it's kind of a way of looking at a world in terms of what the world is composed of. Imperative follow my commands do this, then that Object-Oriented keep state to yourself send/receive messages Declarative this is what I want I don't care how you do it e.g. SQL Functional sort of a sub-paradigm of Declarative What is functional programming? one simple idea. pure functions (only input in, only output out) Not pure: var name = "Saint Petersburg"; function greet() { console.log("Hello, " + name + "!"); } greet(); // Hello, Saint Petersburg! Pure: function greet(name) { return "Hello, " + name + "!"; } greet("Saint Petersburg"); // Hello, Saint Petersburg! Why functional programming? - more predictable, safer - easier to test/debug all you need to do to test pure functions is to pass in the input and