function compose(f,g) return function(...) return f(g(...)) end end fn = {math.sin, math.cos, function(x) return x^3 end} inv = {math.asin, math.acos, function(x) return x^(1/3) end} for i, v in ipairs(fn) do local f = compose(v, inv[i]) print(f(0.5)) end