robfletcher
01/26/2021, 2:49 PMall
like this:
infix fun <T : Iterable<E>, E> Builder<T>.allIndexed(predicate: Builder<E>.(Int) -> Unit): Builder<T> =
compose("all elements match:") { subject ->
subject.forEachIndexed { index, element ->
get("%s") { element }.apply { predicate(index) }
}
} then {
if (allPassed) pass() else fail()
}