使用 Ramda 的函数组合
Function composition using Ramda
我有 2 个函数和 1 个变量,它们组合后的形式为
const value = f(g(x))(x)
也就是说,f(g(x))
returns 函数再次采用 x
。我不喜欢这种冗余,它阻止我声明我的函数 pointfree。
我需要什么 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)
你可以创建一个函数结果
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));
您可以使用R.chain
const something = chain(conc, triple)
您可以在 Ramda repl.
上看到实际效果
我有 2 个函数和 1 个变量,它们组合后的形式为
const value = f(g(x))(x)
也就是说,f(g(x))
returns 函数再次采用 x
。我不喜欢这种冗余,它阻止我声明我的函数 pointfree。
我需要什么 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)
你可以创建一个函数结果
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));
您可以使用R.chain
const something = chain(conc, triple)
您可以在 Ramda repl.
上看到实际效果