aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional/function.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-12-08 02:00:29 +0100
committerGitHub <noreply@github.com>2022-12-08 01:00:29 +0000
commit6c7feb87923db7f2cc15470d516d6e882d6bba72 (patch)
tree3d737f26fe01f6d911eaffa0022840042b4301ba /lua/mason-core/functional/function.lua
parentfeat(registry): add neocmakelsp (#739) (diff)
downloadmason-6c7feb87923db7f2cc15470d516d6e882d6bba72.tar
mason-6c7feb87923db7f2cc15470d516d6e882d6bba72.tar.gz
mason-6c7feb87923db7f2cc15470d516d6e882d6bba72.tar.bz2
mason-6c7feb87923db7f2cc15470d516d6e882d6bba72.tar.lz
mason-6c7feb87923db7f2cc15470d516d6e882d6bba72.tar.xz
mason-6c7feb87923db7f2cc15470d516d6e882d6bba72.tar.zst
mason-6c7feb87923db7f2cc15470d516d6e882d6bba72.zip
feat(functional): add more functions (#741)
Diffstat (limited to 'lua/mason-core/functional/function.lua')
-rw-r--r--lua/mason-core/functional/function.lua25
1 files changed, 25 insertions, 0 deletions
diff --git a/lua/mason-core/functional/function.lua b/lua/mason-core/functional/function.lua
index f1475229..6f1806db 100644
--- a/lua/mason-core/functional/function.lua
+++ b/lua/mason-core/functional/function.lua
@@ -94,4 +94,29 @@ _.tap = _.curryN(function(fn, value)
return value
end, 2)
+---@generic T, U
+---@param value T
+---@param fn fun(value: T): U
+---@return U
+_.apply_to = _.curryN(function(value, fn)
+ return fn(value)
+end, 2)
+
+---@generic T, R, V
+---@param fn fun (args...: V[]): R
+---@param args V[]
+---@return R
+_.apply = _.curryN(function(fn, args)
+ return fn(args)
+end, 2)
+
+---@generic T, V
+---@param fn fun(...): T
+---@param fns (fun(value: V))[]
+---@param val V
+---@return T
+_.converge = _.curryN(function(fn, fns, val)
+ return fn(unpack(vim.tbl_map(_.apply_to(val), fns)))
+end, 3)
+
return _