pakoito
interface optionSelective: Selective<ForOption> { override fun <A, B> OptionOf<Either<A, B>>.select(f: Kind<F, (A) -> B>): Option<B> = fix().map { it.fold(f, ::identity) } }