Avatar ·

What is the difference between fold and reduce in Kotlin and when to use which?

Hi! I recently started learning Kotlin and came across the fold and reduce functions when working with collections. I understand that both are used for aggregating elements, but I can't quite grasp the difference. Here's an example that confused me. Let's say I have a list of numbers: ```kotlin val numbers = listOf(1, 2, 3, 4, 5) ``` I can calculate the sum using reduce: ```kotlin val sumReduce = numbers.reduce { acc, i -> acc + i } println(sumReduce) // 15 ``` And using fold: ```kotlin val sumFold = numbers.fold(0) { acc, i -> acc + i } println(sumFold) // 15 ``` The result is the same. But I noticed that in fold I pass an initial value (0), while in reduce I don't. What happens if the list is empty? I tried: ```kotlin val emptyList = listOf() // val result = emptyList.reduce { ac