Javascript 传递多个参数的Ramda compose

Javascript 传递多个参数的Ramda compose,javascript,functional-programming,ramda.js,Javascript,Functional Programming,Ramda.js,我们如何将多个输入传递给组合中的函数 const scaleLinear = R.curry((domain,range,t)=>{ let [a,b] = domain, [c,d] = range; return (1 - (t-a)/(b-a))*c + (t-a)(b-a)*d; //getDomain: arr1 -> [xmin,xmax] //getRange: arr2 -> [ymin,ymax] const scale =

我们如何将多个输入传递给组合中的函数

const scaleLinear = R.curry((domain,range,t)=>{
    let [a,b] = domain,
        [c,d] = range;
    return (1 - (t-a)/(b-a))*c + (t-a)(b-a)*d;

//getDomain: arr1 -> [xmin,xmax]
//getRange:  arr2 -> [ymin,ymax]
const scale = R.compose(scaleLinear, getDomain, getRange);

显然,上面的方法不起作用,但是有什么替代方法可以让我最终传入2条数据(arr1,arr2),并得到适当的比例?

在R.compose中,只有最右边(底部)函数的算术数可以大于1。它接收传递给组合函数的参数,返回单个值,然后将其传递给左侧的函数,依此类推

在本例中,您希望转换
scaleLinear
的参数,而不是对一个值应用多个函数。您可以通过应用、和一组转换器来转换函数的参数:

const scale = R.useWith(scaleLinear, [getDomain, getRange, R.identity])
现在,您可以像这样使用
scale

scale(arr1, arr2, 10)

漂亮,我迷上了fp和ramda,只是更有趣而已