diff options
Diffstat (limited to 'lua/nvim-lsp-installer/core/functional/function.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/core/functional/function.lua | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/lua/nvim-lsp-installer/core/functional/function.lua b/lua/nvim-lsp-installer/core/functional/function.lua deleted file mode 100644 index 0d70aa92..00000000 --- a/lua/nvim-lsp-installer/core/functional/function.lua +++ /dev/null @@ -1,89 +0,0 @@ -local data = require "nvim-lsp-installer.core.functional.data" - -local _ = {} - ----@generic T : fun(...) ----@param fn T ----@param arity integer ----@return T -_.curryN = function(fn, arity) - return function(...) - local args = data.table_pack(...) - if args.n >= arity then - return fn(unpack(args, 1, arity)) - else - return _.curryN(_.partial(fn, unpack(args, 1, args.n)), arity - args.n) - end - end -end - -_.compose = function(...) - local functions = data.table_pack(...) - assert(functions.n > 0, "compose requires at least one function") - return function(...) - local result = data.table_pack(...) - for i = functions.n, 1, -1 do - result = data.table_pack(functions[i](unpack(result, 1, result.n))) - end - return unpack(result, 1, result.n) - end -end - ----@generic T ----@param fn fun(...): T ----@return fun(...): T -_.partial = function(fn, ...) - local bound_args = data.table_pack(...) - return function(...) - local args = data.table_pack(...) - local merged_args = {} - for i = 1, bound_args.n do - merged_args[i] = bound_args[i] - end - for i = 1, args.n do - merged_args[bound_args.n + i] = args[i] - end - return fn(unpack(merged_args, 1, bound_args.n + args.n)) - end -end - -_.identity = function(a) - return a -end - -_.always = function(a) - return function() - return a - end -end - -_.T = _.always(true) -_.F = _.always(false) - ----@generic T : fun(...) ----@param fn T ----@param cache_key_generator (fun(...): string | nil)|nil ----@return T -_.memoize = function(fn, cache_key_generator) - cache_key_generator = cache_key_generator or _.identity - local cache = {} - return function(...) - local key = cache_key_generator(...) - if not cache[key] then - cache[key] = data.table_pack(fn(...)) - end - return unpack(cache[key], 1, cache[key].n) - end -end - ----@generic T ----@param fn fun(): T ----@return fun(): T -_.lazy = function(fn) - local memoized = _.memoize(fn, _.always "lazyval") - return function() - return memoized() - end -end - -return _ |
