public static void Maybe2Composition() { Func <int, Maybe2 <int> > add2 = x => (x != 0) ? Maybe2 <int> .Just(x + 2) : Maybe2 <int> .Nothing(); Func <int, Maybe2 <int> > multiplyBy2 = x => (x != 0) ? Maybe2 <int> .Just(x * 2) : Maybe2 <int> .Nothing(); Func <int, Maybe2 <int> > add2MultiplyBy2 = x => add2(x).Bind(multiplyBy2); var result = add2MultiplyBy2(3); Console.WriteLine("result = {0}", result); }
public static Maybe2 <T> ToMaybe2 <T>(this T value) { return(Maybe2 <T> .Just(value)); }