Combine list elements into a single total.

fold-sum `foldLeft` starts from a seed and combines it with each element in turn. Here it adds the numbers into a running total.

Folding a List

seed
FoldSum.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val seed = 0
    val nums = List(1, 2, 3, 4)
    val total = nums.foldLeft(seed)((acc, n) => acc + n)

    println("seed=" + seed)
    println("total=" + total)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val seed = 10
    val nums = List(1, 2, 3, 4)
    val total = nums.foldLeft(seed)((acc, n) => acc + n)

    println("seed=" + seed)
    println("total=" + total)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val seed = 100
    val nums = List(1, 2, 3, 4)
    val total = nums.foldLeft(seed)((acc, n) => acc + n)

    println("seed=" + seed)
    println("total=" + total)
  }
}
  1. seed ← 0, nums ← List(1, 2, 3, 4), total ← 10

    1object Main {2  def main(args: Array[String]): Unit = {3    val seed→ 0 = 0 //@seed=10, 1004    val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5    val total→ 10 = numsList(1, 2, 3, 4).foldLeft(seed0)((acc, n) => acc + n)67    println("seed=" + seed0)8    println("total=" + total10)9  }10}
    outputseed=0
    total=10
  1. seed ← 10, nums ← List(1, 2, 3, 4), total ← 20

    1object Main {2  def main(args: Array[String]): Unit = {3    val seed→ 10 = 104    val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5    val total→ 20 = numsList(1, 2, 3, 4).foldLeft(seed10)((acc, n) => acc + n)67    println("seed=" + seed10)8    println("total=" + total20)9  }10}
    outputseed=10
    total=20
  1. seed ← 100, nums ← List(1, 2, 3, 4), total ← 110

    1object Main {2  def main(args: Array[String]): Unit = {3    val seed→ 100 = 1004    val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5    val total→ 110 = numsList(1, 2, 3, 4).foldLeft(seed100)((acc, n) => acc + n)67    println("seed=" + seed100)8    println("total=" + total110)9  }10}
    outputseed=100
    total=110