Busy Java Developer's Guide to Functional Programming in Java

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

Objectives

What are we here to do today?

Functional Programming

What's it mean, exactly?

Functional Programming

What's wrong with imperative statements?

Functional Programming

Functional languages

Functional Programming

Some core functional concepts

Functional Programming

Some optional functional concepts

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

Functional Programming Resources

Web

Summary

What did we do today?

Credentials

Who is this guy?