基本上,我需要的是使用Ramda以功能免费的方法替换此(x) => f(x)(x)

有办法吗?

最佳答案

在Ramda中,您可以使用R.unnest(通常使用其他语言的join)。正如@ftor的注释中指出的那样,尽管这通常用于展平嵌套列表,但它也可以作用于函数的Chain实例。

unnest :: Chain c => c (c a) -> c a

-- when used with lists
unnest :: [[a]] -> [a]

-- when used with functions
unnest :: (r -> r -> a) -> (r -> a)


这是通过将R.multiply传递给R.unnest来产生给定数字平方的函数的示例:



const sq = R.unnest(R.multiply)

console.log(sq(5)) //=> 25

<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

09-30 21:13