使用Ramda的功能组合

时间:2017-10-02 18:44:10

标签: javascript functional-programming ramda.js pointfree

我有2个函数和1个变量,当它们组合时采用

形式
const value = f(g(x))(x)

也就是说,f(g(x))会再次返回x的函数。我不喜欢这种冗余,它阻止我宣布我的功能无点。

我需要将什么Ramda函数转换为R.something(f,g)(x)?

这是一个可以在http://ramdajs.com/repl/?v=0.24.1中测试的工作示例,

const triple = x => x * 3
const conc = x => y => x + " & " + y

const x = 10

conc(triple(x))(x)

// I'm looking for R.something(conc, triple)(x)

2 个答案:

答案 0 :(得分:3)

您可以使用R.chain

const something = chain(conc, triple)

您可以在 Ramda repl 上看到这一点。

答案 1 :(得分:0)

你可以制作一个

的功能结果

const triple = x => x * 3
const conc = x => y => x + " & " + y

let result = (a, b) => e => a(b(e))(e)

const x = 10

console.log(conc(triple(x))(x));

// I'm looking for R.something(conc, triple)(x)

console.log(result(conc, triple)(x));