First Order Functions - The ability to pass functions as parameters or as returned values
Currying - The decomposing a function with multiple arguments into a series of single argument functions
Lambda Calculus - The mathematical basis for functional programming
Pure Functions - Functions that have no requirement on state, running this function with a set or parameters will always return the same result
Immutable Data - When a variable is initially set, it's value cannot be changed Recursion - Having functions that call themselves during execution
I found with FP, it's best to just spend time working with it. The difference in mindset required I thought was hard to grasp without getting my feet wet.