public static Option <R> bind <T, R>(Option <T> option, Func <T, Option <R> > binder) => option.Bind(binder);
public static Option <R> bind <T, R>(Option <T> option, Func <T, Option <R> > Some, Func <Option <R> > None) => option.Bind(Some, None);
public static Option <A> flatten <A>(Option <Option <A> > ma) => ma.Bind(identity);