Functional Table Processing
Reduce Total
Combine values into one accumulated result.
reduce values
Reducing starts from an accumulator and folds each value into it.
Reduce Total
reduce_total.lua
Replay: real traced execution (multi-file project)
local start = 10
local total = start
for _, value in ipairs({1, 2, 3}) do
total = total + value
end
print("start=" .. start)
print("total=" .. total)
local start = 0
local total = start
for _, value in ipairs({1, 2, 3}) do
total = total + value
end
print("start=" .. start)
print("total=" .. total)
local start = 100
local total = start
for _, value in ipairs({1, 2, 3}) do
total = total + value
end
print("start=" .. start)
print("total=" .. total)
start ← 10, total ← 10
1local start→ 10 = 10 --@start=0, 1002local total→ 10 = start10total ← 11
pass 1 of 34for _1, value1 in ipairs({1, 2, 3}) do5 total→ 11 = total + value16endAll 3 passes — pass 1 is the card above pass _valuetotal1 1 1 10 → 11 2 2 2 11 → 13 3 3 3 13 → 16 print("start=" .. start)
8print("start=" .. start10)9print("total=" .. total16)outputstart=10 total=16
start ← 0, total ← 0
1local start→ 0 = 02local total→ 0 = start0total ← 1
pass 1 of 34for _1, value1 in ipairs({1, 2, 3}) do5 total→ 1 = total + value16endAll 3 passes — pass 1 is the card above pass _valuetotal1 1 1 0 → 1 2 2 2 1 → 3 3 3 3 3 → 6 print("start=" .. start)
8print("start=" .. start0)9print("total=" .. total6)outputstart=0 total=6
start ← 100, total ← 100
1local start→ 100 = 1002local total→ 100 = start100total ← 101
pass 1 of 34for _1, value1 in ipairs({1, 2, 3}) do5 total→ 101 = total + value16endAll 3 passes — pass 1 is the card above pass _valuetotal1 1 1 100 → 101 2 2 2 101 → 103 3 3 3 103 → 106 print("start=" .. start)
8print("start=" .. start100)9print("total=" .. total106)outputstart=100 total=106