Functional programming 管道内无点局部应用?

Functional programming 管道内无点局部应用?,functional-programming,ramda.js,Functional Programming,Ramda.js,我不知道该用什么方法来释放下面的代码点。以下方法可行,但需要中间状态变量,这似乎是不必要的 import { pipe, curryN, __, prop } from 'Ramda' import ns from 'ns' // For the sake of this, let's say `ns.foo` is just `console.log` // (it can take any number of args) const bar = pipe( prop('foo')

我不知道该用什么方法来释放下面的代码点。以下方法可行,但需要中间状态变量,这似乎是不必要的

import { pipe, curryN, __, prop } from 'Ramda'
import ns from 'ns' 

// For the sake of this, let's say `ns.foo` is just `console.log` 
// (it can take any number of args)

const bar = pipe(
  prop('foo'),
  curryN(3),
  (x) => x(__, 'b', __),
  Promise.promisify, // or something
)(ns)

bar('a', 'c')
// => 'a b c' 

.

也许我只是有点困惑,但这看起来像是一个简单的关于福的咖喱:

将x=>x_uuuu,'b',_uuuuu转换为无点形式的一种方法是使用翻转的R.apply实例,部分应用于参数列表

R.flip(R.apply)([R.__, 'b'])

但是,与原始的匿名函数相比,我觉得它开始失去可读性,因此在寻找无点解决方案时,请始终记住这一点。

以上是一个人为的例子,在我的实际情况中,管道还有更多。我还正在使用另一个库中的现有函数,我的目标是创建一个更好的接口,这样我就有了一个无法重写的现有foo,因此我希望在管道中做一些事情。我更新了此处的代码段以反映这些约束。我在代码中没有看到任何状态变量?在匿名函数x=>x_uu中,在curryN3之后,我希望尝试删除它。我希望应用,但我没有想到翻转它。我同意,它开始模糊读者的意图,并可能使读者在这条线上停留的时间更长。谢谢你的回答!我将把这个问题留一段时间,看看是否有其他的FP忍者可以突袭进来,让我看到光明。
R.flip(R.apply)([R.__, 'b'])