RosettaCodeData/Task/Catamorphism/Lua/catamorphism-2.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))