草庐IT

currying

全部标签

swift - 如何在 curried 函数中指定 `weak` self

我有一个UIViewController,它在其属性之一上调用异步函数。对于回调,我想提供一个具有正确参数类型的函数,而不是闭包。classFetcher{funcfetch(completion:([String]->())){//...dostuffcompletion([...])}}classViewController:UIViewController{letfetcher=Fetcher()funcfetch(){fetcher.fetch(didFetch)}funcdidFetch(result:[String]){//handleresult}}一切正常,除了两个对象

Swift:消除作为类型柯里化(Currying)函数的方法之间的歧义(仅限 < Swift 2.2)

请注意,随着Swift2.2的发布,这个问题已经得到解决——请参阅TheSwiftProgrammingLanguage一书的“ExplicitMemberExpression”部分。在swift中,您可以对一个方法进行可选调用,该方法可能会或可能不会按照协议(protocol)实现:@objcprotocolF{optionalfuncf(#p1:String,p2:String)->String}@objcclassC:F{funcf(#p1:String,p2:String)->String{return"0\(p1)\(p2)"}}letc:F=C()c.f?(p1:"1",p

swift - 通用 curry map 功能

我尝试将map函数编写为curried和flipped。(首先转换函数然后收集)。我确实编写了函数并且编译器接受了它。但我无法调用它。编译器给出没有带有提供参数的map函数。不管怎样,这是我写的函数:funcmap(f:(A.Generator.Element)->B)->A->[B]{return{map($0,f)}}这是测试代码:funcsquare(a:Int)->Int{returna*a}map(square)注意:代码是使用Xcode6.3beta2在playground中编写的 最佳答案 这里的问题是map不够锁定—

ios - Swift: 'Currying' 和返回函数的函数有什么区别?

//function1-------Curryingfuncincrement(incrementByx:Int)(y:Int)->Int{returnx+y}//function2-------Thefunctionthatreturnafunctionfuncincrement(incrementByx:Int)->((Int)->Int){funcincrementFunc(y:Int){returnx+y}}这两个函数做同样的事情,不是吗?我可以用同样的方式使用它们。像这样:letincrementFunc=increment(incrementBy:10)varnumber=

swift - swift 中的 Curried 中缀运算符。可能吗?

我正在尝试实现函数组合。起初我定义了一个名为compose的函数。funccompose(f:(B->C))(g:(A->B))->A->C{return{f(g($0))}}这很好用。例如,如果我有not和isEven功能,例如funcnot(value:Bool)->Bool{return!value}funceven(value:Int)->Bool{returnvalue%2==0}odd函数可以根据not和even定义,如下所示:funcodd(value:Int)->Bool{returncompose(not)(isEven)(value)}然后我决定使用自定义运算符而不

swift - 在 Swift 中柯里化(Currying), future 会出现新的声明语法吗?

今天刚在Linux上安装了Swift来检查一下。尝试柯里化(Currying)的一个小例子会导致一个警告,即柯里化(Currying)的语法将来会发生变化,但是我找不到任何关于这种新语法的信息。我试过的柯里化(Currying)示例:funcdo_stuff(x:Int)(y:Int)(z:Int)->Int{return(x-y)*z}letcurry_fun=do_stuff(42)letx=curry_fun(y:7)(z:3)编译此示例会产生以下警告:warning:curriedfunctiondeclarationsyntaxwillberemovedinafutureve

python - 在 Python 中,部分函数应用(柯里化(Currying))与显式函数定义

在Python中,它是否被认为是更好的风格:根据更通用的(可能是内部使用的)功能明确定义有用的功能;或者,使用部分函数应用来明确描述函数柯里化(Currying)?我将通过一个人为的例子来解释我的问题。假设有人编写了一个函数_sort_by_scoring,它接受两个参数:一个评分函数和一个项目列表。它返回原始列表的副本,该副本根据每个项目在原始列表中的位置按分数排序。还提供了两个示例评分函数。def_sort_by_score(scoring,items_list):unsorted_scored_list=[(scoring(len(items_list),item_positio

c++ - 尝试将 curried lambda 与另一个 lambda 组合时出现意外结果

我正在玩弄C++11lambda,并试图模仿functionalmodule中的一些函数。D编程语言。我实际上是在尝试实现curry和compose.这里是main我正在努力工作:intmain(){autoadd=[](inta,intb){returna+b;};autoadd5=curry(add,5);autocomposed=compose(add5,add);//Expectedresult:25std::cout问题是我没有从g++和clang++得到相同的结果。我明白了:35与g++4.8.125withg++4.8.225与g++4.932787与clang++3.5

python - python中的柯里化(Currying)装饰器

我正在尝试在python中编写一个柯里化(Currying)装饰器。我已经走到这一步了:defcurry(fun):cache=[]numargs=fun.func_code.co_argcountdefnew_fun(*args,**kwargs):print(args)print(kwargs)cache.extend(list(args))iflen(cache)>=numargs:#easiertodoitexplicitlythanwithexceptionstemp=[]for_inxrange(numargs):temp.append(cache.pop())fun(*t

c++ - 如何在 C++ 中进行柯里化(Currying)?

什么是柯里化(Currying)?如何在C++中进行柯里化(Currying)?请解释一下STL容器中的Binder? 最佳答案 1。什么是curry?Currying只是意味着将多个参数的函数转换为单个参数的函数。这很容易用一个例子来说明:取函数f接受三个参数:intf(inta,std::stringb,floatc){//dosomethingwitha,b,andcreturn0;}如果我们想调用f,我们必须提供它的所有参数f(1,"somestring",19.7f).然后是f的curry版本,我们称之为curried_f