Option<B> foldMapO<A, B>(Semigroup<B> si, F fa, B f(A a)) => foldMap(new OptionMonoid(si), fa, composeF(some, f));