jjzjj

currying

全部标签

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

c# - (如何)是否可以绑定(bind)/重新绑定(bind)一个方法来与不同签名的委托(delegate)一起工作?

我是一名C++开发人员,在C++中使用过信号和槽,这对我来说似乎类似于C#中的委托(delegate)。我发现自己在寻找“绑定(bind)”提供的功能时不知所措,觉得我一定遗漏了一些东西。我觉得像下面这样的东西,在c++中是可能的,在带有委托(delegate)的c#中应该是可能的。这是我在C++中所做的一些伪代码:SlotsomeCallback;intfoo(inti){std::coutsomeCallback=bind(fun_ptr(foo),i);++i;//addedtoshowthatlateevaluationwouldbeanon-trivialdifference

C# Linq 与柯里化(Currying)

我正在研究函数式编程及其各种概念。所有这些东西都很有趣。我已经多次阅读有关Currying及其优势的文章。但我不明白这一点。以下源代码演示了curry概念的使用和linq的解决方案。实际上,我没有看到使用柯里化(Currying)概念的任何优势。那么,使用柯里化(Currying)有什么好处呢?staticboolIsPrime(intvalue){intmax=(value/2)+1;for(inti=2;i,IEnumerable>GetPrimes=HigherOrder.GetFilter().Curry()(IsPrime);staticvoidMain(string[]ar

c# - C# 中的 Currying 有什么优势? (实现部分功能)

C#中的Currying有什么优势?在柯里化(Currying)函数上实现部分函数应用有什么好处? 最佳答案 如果您的问题是如何在C#中实现柯里化(Currying),这里有一个示例publicFunc>Curry(Funcfunc){returnp1=>p2=>func(p1,p2);}柯里化(Currying)可以用任何支持闭包(lambdas)的语言来实现,并且对于部分函数应用很有用,比如在UI编程中,在这种情况下,执行函数所需的所有输入都没有收到,所以柯里化(Currying)函数已经传递了接收到其中捕获的输入。

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);//=