Busy JavaScript Developer's Guide to Functional Programming

ted.neward@newardassociates.com | Blog: http://blogs.newardassociates.com | Github: tedneward | LinkedIn: tedneward

Objectives

Functional Programming

What's it mean, exactly?

Functional Programming

Core functional concepts

Functional Programming

Immutable values

Values over variables

Functional Programming

A functional pseudocode example


let x = 0      // or sometimes "val"
let y = 1
let z = x + y

Functional Programming

Functions as first-class values

Functional Programming

Higher-order functions


let numbers = [1, 2, 3, 4, 5]
let squares = numbers.map((num) -> num * num);
// squares = [1, 4, 9, 16, 25]

Functional Programming

Function composition

Functional Programming

Partial application

Functional Programming

Partial application


let add x y = x + y

let five = add 2 3  // = 5
let addBy2 = add 2  // = (anonymous fn) = 2 + y
let six = addBy2 addBy2 2 // = 6

Functional Programming

Currying

Functional Programming

Expressions-not-statements

Functional Programming

Laziness

Functional Programming

Sequences

Functional Programming

Optional functional concepts

Functional Programming

Strongly-typed

Type-inferenced

Functional Programming

Recursion

Functional Programming

Tuples, lists

Functional Programming

Pattern-matching

Summary

Credentials

Who is this guy?