Рассмотрим следующий код в С#.
public int Foo(int a)
{
// ...
}
// in some other method
int? x = 0;
x = Foo(x);
Последняя строка вернет ошибку компиляции cannot convert from 'int?' to 'int', которая достаточно справедлива. Однако, например, в Haskell существует Maybe, который является эквивалентом Nullable в С#. Поскольку Maybe является Functor, я мог бы применить Foo к x с помощью fmap. Имеет ли С# аналогичный механизм?