This document discusses three functional programming concepts: lambda, higher order functions, and currying. Lambda refers to anonymous functions that are used once with higher order functions. Higher order functions receive or return other functions. Currying transforms functions that take multiple arguments into functions that take one argument at a time through partial application.