Free<F, Option<B>> traverseFree<F, B>(Free<F, B> f(A a)) => fold(() => new Pure(none()), (a) => f(a).map(some));