What Is Functional Programming?Functions in MathematicsVariables That Aren’tFunctional Programming in ScalaAnonymous Functions, Lambdas, and ClosuresPurity Inside Versus OutsideRecursionTail Calls and Tail-Call OptimizationPartially Applied Functions Versus Partial FunctionsCurrying and Uncurrying FunctionsTupled and Untupled FunctionsPartial Functions Versus Functions Returning OptionsFunctional Data StructuresSequencesMapsSetsTraversing, Mapping, Filtering, Folding, and ReducingTraversingMappingFlat MappingFilteringFolding and ReducingLeft Versus Right FoldingCombinators: Software’s Best Component AbstractionsWhat About Making Copies?Recap and What’s Next