Book Image

Functional C#

Book Image

Functional C#

Overview of this book

Functional programming makes your application faster, improves performance, and increases your productivity. C# code is written at a higher level of abstraction, so that code will be closer to business requirements, abstracting away many low-level implementation details. This book bridges the language gap for C# developers by showing you how to create and consume functional constructs in C#. We also bridge the domain gap by showing how functional constructs can be applied in business scenarios. We’ll take you through lambda expressions and extension methods, and help you develop a deep understanding of the concepts and practices of LINQ and recursion in C#. By the end of the book, you will be able to write code using the best approach and will be able to perform unit testing in functional programming, changing how you write your applications and revolutionizing your projects.
Table of Contents (19 chapters)
Functional C#
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

Caching expensive resources


Sometimes, we have to create an expensive resource in our program. It's not a problem if we only do it once. It will be a big problem if we do it over and over for the same function. Fortunately, in a functional approach, we will get the same output if we pass the exact same input or arguments. We can then cache this expensive resource and use it again when the passed argument is the same. Now we are going to discuss precomputation and memoization in order to cache the resources.

Performing initial computation

One of the caching techniques we have is precomputation, which performs an initial computation in order to create a lookup table. This lookup table is used to avoid repetitive computation when a particular process is executed. Now we are going to create code to compare the difference in the process with and without precomputation. Let's take a look at the following code, which we can find in the Precomputation.csproj project:

public partial class Program &...