combine

fun <A, T> Const<A, T>.combine(SG: Semigroup<A>, that: Const<A, T>): Const<A, T>
fun <A, B> Either<A, B>.combine(    SGA: Semigroup<A>,     SGB: Semigroup<B>,     b: Either<A, B>): Either<A, B>
fun <A, B> Ior<A, B>.combine(    SA: Semigroup<A>,     SB: Semigroup<B>,     other: Ior<A, B>): Ior<A, B>
fun <A> Option<A>.combine(SGA: Semigroup<A>, b: Option<A>): Option<A>
fun <A, B> Pair<A, B>.combine(    SA: Semigroup<A>,     SB: Semigroup<B>,     b: Pair<A, B>): Pair<A, B>
fun <E, A> Validated<E, A>.combine(    SE: Semigroup<E>,     SA: Semigroup<A>,     y: Validated<E, A>): Validated<E, A>
fun <K, A> Map<K, A>.combine(SG: Semigroup<A>, b: Map<K, A>): Map<K, A>