javascript - 使用 Ramda 的 f(x)(g(x)) 形式的函数组合

标签 javascript functional-programming ramda.js pointfree

我无法找出 f(x)(g(x)) 的转换使用 Ramda 中提供的功能。我希望有类似 R.something(f, g)(x) 的东西理想情况下 - 只要 x仅出现一次,并且是最终参数。

f是一个取 x 的函数返回一个函数

g是一个取 x 的函数返回一个值

我已经尝试过pipe , compose , chain ,但说实话,我猜测得相当困难,而且没有一个能工作。我最近问了一个类似的问题,我很想知道一种具有大量有用身份的资源(如果存在),这样我就不需要继续询问:)

最佳答案

chain 很接近:它对函数执行 chain(f, g)(x) == f(g(x))(x) 。因此,您只需在将 f 传递到 chain 之前翻转它即可:

R.chain(R.flip(f), g)(x)

const something = R.compose(R.chain, R.flip)
something(f, g)(x)

关于javascript - 使用 Ramda 的 f(x)(g(x)) 形式的函数组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46575681/

相关文章:

scala - 如何使用Applicative实现并发?

functional-programming - F# 查询表达式与 native SQL 具有相同的性能吗?

javascript - 将对象的每个值称为 pointfree

javascript - Ramda JS : How to perform a map where I call R. 替换每个对象的给定属性?

javascript - 在 contenteditable div 中自动更新模板

javascript - 当单选按钮选择更改时清除复选框

javascript - 如何获取所选html文本的startOffset/endOffset?

string - Haskell 操作文件内容

javascript - Ramda.js 中镜头的无点组合

Javascript:反垃圾邮件自动主持人 (Discord.js)