for the accumulator • Reduce uses the first element of the input list as the initial accumulator value • Fold : the accumulator and result type can differ as the accumulator is provided separately. • Reduce : the accumulator and therefore result type must match the list element type. var items = List(1, 2, 3, 4, 5); var fold = items .Map(x => x * 10) .Fold(0, (acc, x) => acc + x); // 150 var reduce = items .Map(x => x * 10) .Reduce((acc, x) => acc + x); // 150 var items = List(1, 2, 3, 4, 5); var fold = items .Map(x => x * 10) .Fold(0m, (acc, x) => acc + x); // 150 var reduce = items .Map(x => x * 10) .Reduce((acc, x) => Convert.ToDecimal(acc + x)); // Do not compile