fold vs foldRight
val list = listOf("a", "b", "c", "d", "e")
println(list.foldRight("", { pre, acc -> pre + acc })) // "abcde"
println(list.fold("", { acc, next -> acc + next })) // "abcde"
println(list.foldRight("", { pre, acc -> "($pre + $acc)" }))
// (a + (b + (c + (d + (e + )))))
println(list.fold("", { acc, next -> "($acc + $next)" }))
// ((((( + a) + b) + c) + d) + e)
val stringBuilderFR = StringBuilder()
println(list.foldRight(stringBuilderFR, { pre, acc -> stringBuilderFR.append(pre) } ))
// edcba
val stringBuilderFL = StringBuilder()
println(list.fold(stringBuilderFL, { acc, next -> stringBuilderFL.append(next) } ))
// abcdeLast updated