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


 
#lang racket
(define (fold f xs init)
  (if (empty? xs)
      init
      (f (first xs)
         (fold f (rest xs) init))))
 
(fold + '(1 2 3) 0)   ; the result is 6
 