local tbl = require "plenary.tbl" local M = {} function M.bind(fn, ...) if select("#", ...) == 1 then local arg = ... return function(...) fn(arg, ...) end end local args = tbl.pack(...) return function(...) fn(tbl.unpack(args), ...) end end function M.arify(fn, argc) return function(...) if select("#", ...) ~= argc then error(("Expected %s number of arguments"):format(argc)) end fn(...) end end function M.create_wrapper(map) return function(to_wrap) return function(...) return map(to_wrap(...)) end end end return M