traverse

inline fun <E, A, B> Iterable<A>.traverse(f: (A) -> Either<E, B>): Either<E, List<B>>
inline fun <A, B> Iterable<A>.traverse(f: (A) -> <ERROR CLASS><B>): <ERROR CLASS><List<B>>
inline fun <E, A, B> Iterable<A>.traverse(semigroup: Semigroup<E>, f: (A) -> Validated<E, B>): Validated<E, List<B>>
inline fun <E, A, B> Iterable<A>.traverse(f: (A) -> ValidatedNel<E, B>): ValidatedNel<E, List<B>>
inline fun <A, B> Iterable<A>.traverse(f: (A) -> Option<B>): Option<List<B>>
inline fun <A, B> Iterable<A>.traverse(f: (A) -> B?): List<B>?
fun <E, A, B> <ERROR CLASS><A>.traverse(f: (A) -> Either<E, B>): Either<E, List<B>>
fun <A, B> <ERROR CLASS><A>.traverse(f: (A) -> Option<B>): Option<List<B>>
fun <E, A, B> <ERROR CLASS><A>.traverse(semigroup: Semigroup<E>, f: (A) -> Validated<E, B>): Validated<E, List<B>>