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

Introducing Monad as a design pattern


It's quite difficult to explain Monad in an object-oriented programming (OOP) language such as C#. However, in OOP, there is one useful idea to explain Monad: design patterns. A design pattern is a reusable solution for complex problems in software design. Imagine a design pattern in architecture. Many buildings in this world must have the same pattern: doors, windows, walls, and so on. If we compare design patterns in architecture with design patterns in software design, we'll realize that they both have the same idea. In a design pattern for software design, we have functions, types, variables, and so on. These design pattern have been available in the C# language and will come together to build an application.

Considering this design pattern definition, we now have a definition of Monad itself. Monad is a type that uses a Monad pattern. And the Monad pattern is a design pattern for types.

In C#, there are some types that have actually implemented Monad...