public static Func <Func <TA, TB>, Func <TA?, Option <TB> > > IfMapN <TA, TB>(Func <TA, bool> p)
     where TA : struct
 {
     return(f => Compose(OptionMembers.Map(f), IfN(p)));
 }
 public static Func <Func <TA, TB>, Func <TA, Option <TB> > > IfMap <TA, TB>(Func <TA, bool> p)
 {
     return(f => Compose(OptionMembers.Map(f), If(p)));
 }