function partial(fn, arg1) return function(...) return fn(arg1, ...) end end function add(n1, n2) return n1 + n2 end function mul(n1, n2) return n1 * n2 end local s5 = partial(add, 5) print(s5(5)) assert(s5(5) == 10) local doubler = partial(mul, 2) print('32 * 2 =', doubler(32)) print('14 * 2 =', doubler(14))