arrow-core-data / arrow.core / kotlin.collections.Iterable / leftPadZip
inline fun <A, B, C> Iterable<A>.leftPadZip(other: Iterable<B>, fab: (A?, B) -> C): List<C>
Returns a List containing the result of applying some transformation (A?, B) -> C
on a zip, excluding all cases where the right value is null.
Example:
import arrow.core.*
//sampleStart
val left = listOf(1, 2).leftPadZip(listOf("a")) { l, r -> l to r } // Result: [Pair(1, "a")]
val right = listOf(1).leftPadZip(listOf("a", "b")) { l, r -> l to r } // Result: [Pair(1, "a"), Pair(null, "b")]
val both = listOf(1, 2).leftPadZip(listOf("a", "b")) { l, r -> l to r } // Result: [Pair(1, "a"), Pair(2, "b")]
//sampleEnd
fun main() {
println("left = $left")
println("right = $right")
println("both = $both")
}
fun <A, B> Iterable<A>.leftPadZip(other: Iterable<B>): List<Pair<A?, B>>
Returns a ListPairA?,B containing the zipped values of the two lists with null for padding on the left.
Example:
import arrow.core.*
//sampleStart
val padRight = listOf(1, 2).leftPadZip(listOf("a")) // Result: [Pair(1, "a")]
val padLeft = listOf(1).leftPadZip(listOf("a", "b")) // Result: [Pair(1, "a"), Pair(null, "b")]
val noPadding = listOf(1, 2).leftPadZip(listOf("a", "b")) // Result: [Pair(1, "a"), Pair(2, "b")]
//sampleEnd
fun main() {
println("left = $left")
println("right = $right")
println("both = $both")
}
Do you like Arrow?
✖