20 lines
567 B
Lua
20 lines
567 B
Lua
function foldl(func, init, array)
|
|
assert(type(func) == "function", "type(fn) == " .. type(func))
|
|
assert(type(array) == "table", "type(array) == " .. type(array))
|
|
local result = init
|
|
for v in ipairs(array) do
|
|
result = func(result, v)
|
|
end
|
|
return result
|
|
end
|
|
|
|
function add(x, y) return x + y end
|
|
mul = function(x, y) return x * y end
|
|
|
|
nums = {1,2,3,4,5,6,7,8,9}
|
|
print("add 1 to 9 ", foldl(add, 0, nums))
|
|
print("multiply", foldl(mul, 1, nums))
|
|
-- uses anonymous function
|
|
print("concatenate",
|
|
foldl(function(x,y) return x .. y end, "", nums))
|