function Functional.Fold(y,m,R)local W=m for m=1,#y,1 do W=R(W,y[m],m)end return W end
--[[
	Performs a left-fold of the list with the given initial value and callback.
]]
function Functional.Fold(list, initial, callback)
	local accum = initial

	for key = 1, #list do
		accum = callback(accum, list[key], key)
	end

	return accum
end
