PART III
Implementing Well-known Functional Techniques in C#
CHAPTER 8: Currying and Partial Application
CHAPTER 9: Lazy Evaluation
CHAPTER 10: Caching Techniques
CHAPTER 11: Calling Yourself
CHAPTER 12: Standard Higher Order Functions
CHAPTER 13: Sequences
CHAPTER 14: Constructing Functions from Functions
CHAPTER 15: Optional Values
CHAPTER 16: Keeping Data from Changing
CHAPTER 17: Monads