// LINQ public static Option <R> Select <T, R>(this Option <T> @this, Func <T, R> func) => @this.Map(func);
public static Option <Func <T2, T3, R> > Map <T1, T2, T3, R> (this Option <T1> @this, Func <T1, T2, T3, R> func) => @this.Map(func.CurryFirst());
public static Option <Func <T2, R> > Apply <T1, T2, R> (this Option <Func <T1, T2, R> > @this, Option <T1> arg) => Apply(@this.Map(F.Curry), arg);
public static Option <Unit> ForEach <T>(this Option <T> t, Action <T> action) => t.Map(action.ToFunc());
public static Option <TResult> Select <TValue, TResult>(this Option <TValue> option, Func <TValue, TResult> map) => option.Map(map);