Example01 Listing 8-1. Customizing Generic Comparison for a New Type Definition, pp. 182 Example02 Listing 8-2. Customizing Generic Hashing and Comparison Using an Extension, pp. 183 Example03 Precomputation and Partial Application, pp. 184 Example04 Listing 8-3. Precomputing a Word Table Before Creating an Object, pp. 185 Example05 Memoizing Computations, pp. 187 Example06 Listing 8-4. A Generic Memoization Function, pp. 187 Example07 Listing 8-5. A Generic Memoization Service, pp. 188 Example08 Lazy Values, pp. 190 Example09 Cleaning Up with use, pp. 192 Example10 Listing 8-6. Implementing IDisposable to Clean Up Internal Objects, pp. 194 Example11 Listing 8-7. Reclaiming Unmanaged Tickets with IDisposable, pp. 196 Example12 Cleaning Up in Sequence Expressions, pp. 197 Example13 Stack As a Resource: Tail Calls and Recursion, pp. 198 Listing 8-8. A Simple Tail-Recursive Function, pp. 199 Tail Recursion and List Processing, pp. 200 Example14 Tail Recursion and Object-Oriented Programming, pp. 202 Listing 8-9. Making an Object Member Tail Recursive, pp. 202 Example15 Tail Recursion and Processing Unbalanced Trees, pp. 203 Listing 8-10. Making a Function Tail Recursive via an Explicit Continuation, pp. 204 Listing 8-11. Combining an Accumulator with an Explicit Continuation, pp. 205 Example16 Another Example: Processing Syntax Trees, pp. 206 Listing 8-12. A Tail-Recursive Expression Evaluator Using Continuations, pp. 206 Example17 Events and Wiring, pp. 207 Example18 Listing 8-13. Creating a RandomTicker That Defines, Publishes, and Triggers an Event, pp. 209