jjzjj

Currying

全部标签

javascript - 带递归的 JS Curry 函数

请在将其标记为重复之前阅读。我不是要求单一的curry调用。这个函数乘法,乘法(4,4,4)//64functionmultiplication(...args){returnargs.reduce((accum,val)=>accum*val,1)}但是我正在努力实现其他目标......这个相同的函数也应该乘以它的curry函数括号。例如/*whichreturnthemultiplicationofthreenumbers.Thefunctioncanbecalledinanyofthefollowingforms:multiply(2,3)(4)=>24multiply(2)(3

javascript - 取消 javascript 中 n 个参数的柯里化(Currying)函数

如果f::a->b->c是柯里化(Currying)的,那么uncurry(f)可以定义为:uncurry::(a->b->c)->((a,b)->c)我正在尝试在javascript中实现上述功能。我的以下实现是否正确且足够通用,或者是否有更好的解决方案?constuncurry=f=>{if(typeoff!="function"||f.length==0)returnf;returnfunction(){for(leti=0;ia=>b=>f(a,b);constcurriedSum=curry((num1,num2)=>num1+num2);console.log(currie

javascript - 在 React 中柯里化(Currying)事件处理程序

我正在尝试在组件上编写一个(curried?)onChange事件处理程序,该组件将接收一个key参数,该参数将让它知道状态对象中的哪个键更新。代码无法编译,提示'key'isnotdefined。classAppextendsComponent{constructor(props){super(props);this.state={firstName:null,lastName:null}this.handleChange=this.handleChange.bind(this);}handleChange=(key)=(event)=>{console.log(key,event)

javascript - 什么时候 a => f(a) 不等同于 f?

lodash的新手并尝试使用它以获得更多理解。我不明白以下代码的行为。了解_.curry的arity参数后,我有一个代码片段产生的结果对我来说似乎很奇怪。constwords=['jim','john'];constpad10=words=>_.map(words,word=>_.pad(word,10));console.log(pad10(words));//['jim','john']constflipMap=_.flip(_.map);constflipPad=_.flip(_.pad);constcurriedFlipMap=_.curry(flipMap,2);constp

javascript - 如何在 JavaScript 中部分应用成员函数?

我目前有一个部分应用程序函数,如下所示:Function.prototype.curry=function(){varargs=[];for(vari=0;i问题是它只适用于非成员函数,例如:functionfoo(x,y){alert(x+y);}varbar=foo.curry(1);bar(2);//alerts"3"我如何改写要应用于成员函数的curry函数,如:functionFoo(){this.z=0;this.out=function(x,y){alert(x+y+this.z);}}varbar=newFoo;bar.z=3;varfoobar=bar.out.cur

javascript - 动态柯里化(Currying),以及如何在 JavaScript 变量中同时保存函数和值

这个问题在这里已经有了答案:Variadiccurriedsumfunction(19个回答)关闭6年前。我正在学习JavaScript,我最近遇到了一个practiceproblem这要求我构建一个可以创建如下输出的函数:varthreeSum=sum(3);threeSum//3threeSum(4)//7threeSum(4)(3)//10threeSum(4)(3)(7)//17threeSum(4)(3)(7)()(2)//19threeSum-2//1threeSum+2//5我假设涉及柯里化(Currying),并且我认为我基本了解柯里化(Currying)如何以简单的形

javascript - 如何在未知数量的参数上柯里化(Currying)一个函数

假设我有一个名为multiplyDivide的函数如果我调用multiplyDivide(2)(3)(4)(6)它相当于2*3/4*6.更新:如果我事先不知道我将采用多少参数,是否可以编写这样的函数?例如,我可以有multiplyDivide(1)(2)或multiplyDivide(1)(2)(3)(4)...(n-1)(n) 最佳答案 这是可能的,但您需要定义终止条件,因为该问题本质上与编写递归函数的问题相同。该函数需要一种方法来判断它应该返回一个函数还是一个值。您如何表示对值(value)的需求取决于您。一种方法是检查是否传递

javascript - ES6 双箭头参数(即 const update = x => y => { } )

这个问题在这里已经有了答案:javascriptes6doublearrowfunctions(2个答案)关闭5年前。下面代码中的双箭头参数是什么意思?constupdate=x=>y=>{//Dosomethingwithxandy}与下面的相比有何不同?constupdate=(x,y)=>{//Dosomethingwithxandy}谢谢!

javascript - 你如何柯里化(Currying)任意数量的任何 javascript 函数?

假设我有一些功能:functiong(a,b,c){returna+b+c}我想把它变成它的“curry”形式(在引号中,因为它本身并不完全是curry):functionh(a,b,c){switch(true){case(a!==undefined&&b!==undefined&&c!==undefined):returna+b+ccase(a!==undefined&&b!==undefined&&c===undefined):returnfunction(c){returna+b+c}case(a!==undefined&&b==undefined&&c===undefined

javascript 柯里化(Currying)

我正在尝试创建curryfunction可以应用于任何函数并返回另一个函数,并应用其中一个参数。我想要的属性:如果函数只有一个参数,curry函数应该返回值:FA);curry(f,x)=f(x);如果函数有很多参数currey应该重新运行curried函数:g(a1,a2,..,aN);curry(g,x)=g2(a2,..,aN):g2(a2,..aN)=g(x,a2,...,aN)柯里化(Currying)函数的长度属性应该“按需”工作g.length=N=>curry(g,x).length=N-1PrototypeFramework中有一些curry的实现,并在oneblog