Reduce is a function or method that is used to take the values in an array or a list and apply a function to successive members of the list to produce (or reduce them to), a single value.



Task

Show how reduce (or foldl or foldr etc), work (or would be implemented) in your language.



See also

 Wikipedia article:   Fold
 Wikipedia article:   Catamorphism


object Main extends App {
  val a = Seq(1, 2, 3, 4, 5)
  println(s"Array       : ${a.mkString(", ")}")
  println(s"Sum         : ${a.sum}")
  println(s"Difference  : ${a.reduce { (x, y) => x - y }}")
  println(s"Product     : ${a.product}")
  println(s"Minimum     : ${a.min}")
  println(s"Maximum     : ${a.max}")
}