使用Ramda两次应用参数

时间:2018-02-22 04:21:50

标签: javascript functional-programming ramda.js

基本上我需要的是用使用Ramda的无功能点方法替换这个(x) => f(x)(x)

有办法吗?

2 个答案:

答案 0 :(得分:5)

在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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您还可以与chain结合使用,直接使用identity

const f = (x) => (y) => `f(${x})(${y})`

console.log(R.chain(f, R.identity)('x'))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>