gpt4 book ai didi

javascript - 使用 Ramda 返回应用函数数组

转载 作者:行者123 更新时间:2023-11-30 09:35:40 28 4
gpt4 key购买 nike

我想用一个值调用一个函数数组,然后返回一个部分应用的函数数组。

我当前的代码:

const my_array = pipe(flip(call), flip(map)([add, subtract]))(1)
// = [add(1), subtract(1)]

有更好的方法吗?

我的目标(可能不合理)是拥有一个 point-free替代以下功能:

const bind_all = (funcs) => pipe(flip(call), flip(map)(funcs))
bind_all([add, subtract])(1)
// = [add(1), subtract(1)]

这似乎类似于juxt ,但返回一个数组而不是一个函数。


更新:作为对答案的回应,我同意我当前的代码远非可读性,因为我试图强制采用一种无意义的方法(对现有模式的了解有限)。这个问题只是想探索保持可读性的无点设计的极限。

目前的答案似乎表明这实际上是不合理的。

最佳答案

也许我遗漏了什么,但是juxt似乎确实可以满足您的需求

juxt([add, flip(subtract)])(1)(7); //=> [8, 6]

更新:正如评论中所指出的,这没有捕捉到原始要求。我认为以下方法可以。它类似于 @naomik 中的那个,而是创建一个可重用的函数而不是简单地内联运行:

const callAll = curry((fns, arg) => map(fn => fn(arg), fns));

const partials = callAll([add, subtract], 10); //=> [add(10), subtract(10)]
callAll(partials, 3); //=> [10 + 3, 10 - 3] => [13, 7]

显然,如果需要,我们可以用处理多个参数的方式来编写它。使用它一次来创建部分函数,​​然后再次将参数应用于它们感觉也非常优雅。

你可以在 Ramda REPL 上看到这个 Action .

关于javascript - 使用 Ramda 返回应用函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43721159/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com