public static TryOption <T> TryOption <T>(Func <T> f) => TryOptionExtensions.Memo <T>(() => Optional(f()));
public static TryOption <T> TryOption <T>(Func <Option <T> > f) => TryOptionExtensions.Memo <T>(() => f());