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...