Lets build a monad library for C# - Introduction