Kotlin:高阶函数递归、迭代和折叠

Kotlin: Higher Order Function recursive, iterative and with fold

我正在学习 Kotlin 和函数式编程。我必须为密封 class 实现自己的功能。其中一个函数应该以三种不同的方式创建:递归、迭代和使用折叠函数。我选择了 any() 函数。

经过大量研究,我唯一的想法是创建一个 tailrec 函数并在函数内部使用 fold:

fun <T> anyFold (list: MyList<T>, p: (T) -> Boolean)  {
tailrec fun <R> fold (list : MyList<T>, init: R, transform: (R, T) -> R) : Boolean {
    when (list) {
        is MyList.Node -> fold(list.tail, transform(init,list.head),transform)
        is MyList.Nil -> init
    }
    return fold(list, init, transform)

}

}

但我认为不应该这样做,因为结果是 AnyFold kotlin.Unit

现在我正在寻找一种不同的方法。有没有办法通过将 any 函数映射到 fold 函数来创建它?非常欢迎提出想法。

使用您的符号:

fun <T> anyFold(list: List<T>, p: (T) -> Boolean): Boolean =
    list.fold(false, { acc, element -> acc || p(element) })


fun main() {
    println(  anyFold( listOf(1,2,3,4,5)) {it < 5 }) // true
    println(  anyFold( listOf(1,2,3,4,5)) {it > 5 }) // false
}