10.1 Function application in the elevated world10.1.1 Understanding applicatives10.1.2 Lifting functions10.1.3 An introduction to property-based testing10.2 Functors, applicatives, and monads10.3 The monad laws10.3.1 Right identity10.3.2 Left identity10.3.3 Associativity10.3.4 Using Bind with multi-argument functions10.4 Improving readability by using LINQ with any monad10.4.1 Using LINQ with arbitrary functors10.4.2 Using LINQ with arbitrary monads10.4.3 The LINQ clauses let, where, and others10.5 When to use Bind vs. Apply10.5.1 Validation with smart constructors10.5.2 Harvesting errors with the applicative flow10.5.3 Failing fast with the monadic flowExercisesSummary