part one
Chapter 1 starts by looking at what functional programming is and how C# supports programming in a functional style.
Chapter 2 shows how functions are represented in C# and then delves into higher-order functions, a fundamental technique of FP.
Chapter 3 explains what pure functions are, why purity has important implications for a function’s testability, and why pure functions lend themselves well to parallelization and other optimizations.