jjzjj

JavaScript curry

我是JavaScript的新手,试图理解OreillyJavaScriptCookbook中有关柯里化(Currying)的教程。谁能用通俗易懂的语言逐步详细解释这个程序。请务必解释在程序的倒数第二行中传递的“null”参数。如果您能提供帮助,请提前致谢。functioncurry(fn,scope){scope=scope||window;varargs=[];for(vari=2,len=arguments.length;i 最佳答案 如果您不介意某个建议,请从Javascript:好的部分开始。随后阅读JavascriptPa

javascript - Function.bind.bind(Function.call) 如何取消柯里化(Currying)?

我的代码库中有这一行:varuncurryThis=Function.bind.bind(Function.call);我正在努力解决这个问题。据推测,它是uncurries。我该如何解决这个问题?我猜这是Function.bind的一个版本,它自己的this绑定(bind)到Function.call。对我的帮助还不够。而且我还没有发现任何用途,所以我什至不确定您是将其独立调用还是需要将其“作为一种方法”调用,只是,您知道,先绑定(bind)它。 最佳答案 它将call函数传递给bind函数,bind函数本身就是this的值>。因

JavaScript curry 函数

我用这种方式实现了一个curry函数:functioncurry(fn){varslice=Array.prototype.slice,args=slice.apply(arguments,[1]);returnfunction(){fn.apply(null,args.concat(slice.apply(arguments)));};}当我使用上面的函数做下面的事情时functionadd(x,y){returnx+y;}varinc=curry(add,1);console.log(inc(10));它记录undefined。11不是预期的输出吗?我的代码有什么问题?注意:在ad

javascript - 'currying' 和 'composition' 在 Javascript 中是同一个概念吗?

最近我在一本Javascript书中读到了函数组合,然后在一个网站上我看到有人将其称为柯里化(Currying)。它们是同一个概念吗? 最佳答案 @Omarjmh的回答很好,但在我看来,撰写示例对于学习者来说非常复杂Aretheythesameconcept?没有。首先,柯里化(Currying)是将一个接受多个参数的函数转换为一系列函数,每个函数接受一个参数。//notcurriedconstadd=(x,y)=>x+y;add(2,3);//=>5//curriedconstadd=x=>y=>x+y;add(2)(3);//=

javascript - CoffeeScript 中的 n 元 curry

我在玩CoffeeScript时发现自己写了以下几行,然后敬畏地看着它们:compose=(f,g)->(x)->fgxcurry=(f)->(x)->(y)->f(x,y)uncurry=(f)->(x,y)->(fx)y多好,我想!现在,作为练习,我想将curry和uncurry函数泛化为n个参数,以获得类似于此的内容:curry2=(f)->(x)->(y)->f(x,y)curry3=(f)->(x)->(y)->(z)->f(x,y,z)curry4=(f)->(x)->(y)->(z)->(t)->f(x,y,z,t)对于uncurry也是一样的:uncurry2=(f)-

java - 滥用泛型在 Java 中实现柯里化(Currying)组合函数

因此,在稍微接触了Java泛型之后,为了更深入地了解它们的功能,我决定尝试实现函数式程序员熟悉的组合函数的柯里化(Currying)版本。Compose具有类型(在函数式语言中)(b->c)->(a->b)->(a->c)。执行柯里化(Currying)算术函数并不太难,因为它们只是多态的,但compose是一个高阶函数,事实证明它对我理解Java中的泛型很费力。这是我目前创建的实现:publicclassCurrying{publicstaticvoidmain(String[]argv){//BasicusageofcurryingSystem.out.println(add().

java - 代码在 Eclipse 中编译但不是 javac : curried lambdas with functional subinterface. 哪个是正确的?

我在Eclipse中开发了一些代码,测试成功,将其推送到我们的JenkinsCI服务器,并收到一封电子邮件,说Maven因Java编译错误而窒息。我随后隔离了问题并创建了以下显示问题的最小示例:importjava.util.List;importjava.util.function.Function;classMinimalTypeFailureExample{publicstaticvoidmain(String[]args){ListoriginalList=null;//irrelevantListresultList=transform(originalList,outer-

java - 收集参数以应用于 Java/Scala 中的柯里化(Currying)函数

我想在Java8中创建一个类,它能够递归地创建一个对象,该对象具有一个根据我添加的参数采用函数参数的方法。例如,我希望能够这样做:newX().param(23).param("someString").param(someObject).apply((Integera)->(Stringb)->(Objectc)->f(a,b,c))然后apply方法会将收集到的参数应用到给定的函数。我觉得这应该可以在保持类型安全的同时无需反射(reflection),但我不太清楚如何做到这一点。如果我可以将其转换为Java8,也欢迎使用Scala中的解决方案。如果不可能,我也会接受解释原因的答案。

如何声明 Currying 函数的类型?

Challenge在本次挑战中,您需要为 Currying 函数声明相应的类型,以帮助TypeScript编译器推断出正确的类型。declarefunctionCurrying(fn:any):anyconstcurried1=Currying((a:string,b:number,c:boolean)=>true)constcurried2=Currying((a:string,b:number,c:boolean,d:boolean,e:boolean,f:string,g:boolean)=>true)constcurried3=Currying(()=>true)typecases=[

c++ - 柯里化(Currying)函数的惰性类型推断

在下面的例子中,调用mkPair2的类型推断失败了:#includetemplatestructPair{Aleft;Bright;};templatePairmkPair1(Aleft,Bright){return(Pair){left,right};}templatestd::function(B)>mkPair2(Aleft){return[left](Bright){return(Pair){left,right};};}Pairex1=mkPair1(2,'a');Pairex2=mkPair2(2)('a');问题是mkPair2有两个模板参数,但是调用(2)只提供其中一个