Implementation of the Either Monad in C#