deiga
10/22/2017 - 12:42 PM

Kotlin unfoldr

Kotlin unfoldr

fun <T,R> unfoldRight(f: (T) -> Pair<R, T>?, b: T): List<R> {
    val maybePair: Pair<R, T>? = f(b)
    return if ( maybePair == null) {
        listOf()
    } else {
        listOf(maybePair.first) + unfoldRight(f, maybePair.second)
    }
}