Monads for C# developers