partial-application相关内容
这里有一个JavaScript对象, const obj = {a: [{ id: 1 }, {id: 1}, {id: 2}, {id: 3}], b: [{ id: 4 }, {id: 5}, {id: 5}, {id: 6}] }; 下面的代码按.id对两个数组ojb.a和obj.b中的每个数组中的.id正确分组, const res1 = _.map(obj, x => _
..
在loDash(v4.6.1)中遇到了一个奇怪的情况,我将_.padStart的_.partialRight函数传入_.map回调并得到不正确的结果。 转载: _.padStart("0", 2, "0"); // "00" var f = _.partialRight(_.padStart, 2, "0"); f("0"); // "00" _.map(["0"], function
..
我想知道是否有任何方法可以在 Java 中提取它.我认为没有对闭包的原生支持是不可能的. 解决方案 Java 8(2014 年 3 月 18 日发布)确实支持柯里化.missingfaktor的答案中发布的示例Java代码可以重写为: import java.util.function.*;导入静态 java.lang.System.out;//使用 JDK 1.8.0-ea-b75 测
..
我无法理解 functools 中的部分是如何工作的.我在这里有以下代码: >>>总和 = lambda x, y : x + y>>>总和(1, 2)3>>>incr = lambda y : sum(1, y)>>>增量(2)3>>>def sum2(x, y):返回 x + y>>>incr2 = functools.partial(sum2, 1)>>>incr2(4)5 现在排队
..
部分应用很酷.functools.partial 有什么功能提供您无法通过 lambdas 的提议? >>>总和 = lambda x, y : x + y>>>总和(1, 2)3>>>incr = lambda y : sum(1, y)>>>增量(2)3>>>def sum2(x, y):返回 x + y>>>incr2 = functools.partial(sum2, 1)>>>incr
..
如何使用参数数组调用 Function.prototype.bind,而不是硬编码参数?(不使用 ECMA6,所以没有扩展运算符). 我正在尝试在使用回调的模块周围放置一个 Promise 包装器,并且我想绑定所有传入我的包装器方法的参数并绑定它们.然后我想用我自己的回调调用部分应用的绑定函数,它将解析或拒绝一个承诺. var find = function() {var 延迟,绑定;延迟
..
考虑这个代码: 公共类Foo{公共 int a { 得到;放;}公共 int b { 得到;放;}}私人无效测试(){列表foos = new List();foos.Add(new Foo());foos.Add(new Foo());表达式>exp0 = f =>f.a * f.b;表达式exp1 = () =>foos[0].a * foo
..
我最近两次重构了代码以更改参数的顺序,因为有太多的代码像 flip 或 \x ->foo bar x 42 正在发生. 在设计函数签名时,哪些原则可以帮助我充分利用柯里化? 解决方案 对于容易支持柯里化和部分应用的语言,有一系列引人注目的论据,最初来自 Chris Okasaki: 将数据结构作为最后一个参数 为什么?然后,您可以很好地对数据进行组合操作.例如.inser
..
我用 JavaScript 编写了一个简单的 curry 函数,它在大多数情况下都能正常工作: const add = curry((a, b, c) => a + b + c);const add2 = add(2);const add5 = add2(3);console.log(add5(5)); const 咖喱 = Symbol("咖喱");Object.defineProper
..
我想我还没搞懂咖喱.我明白它的作用,以及如何去做.我只是想不出我会使用它的情况. 你在 JavaScript 中哪里使用了柯里化(或者主要库在哪里使用它)?欢迎提供 DOM 操作或一般应用程序开发示例. 其中一个答案提到了动画.slideUp、fadeIn 等函数将一个元素作为参数,通常是一个柯里化函数,返回带有默认“动画函数"内置的高阶函数.为什么这比仅应用具有某些默认值的上级函数更
..
多个参数列表,例如def foo(a:Int)(b:Int) = {} 和每个列表的多个参数,例如def foo(a:Int, b:Int) = {} 据我所知在语义上是等价的,而且大多数函数式语言只有一种声明多个参数的方法,例如F#. 我认为支持这两种函数定义风格的唯一原因是允许使用只有一个参数的参数列表进行类似语法的语言扩展. def withBufferedWriter(file:
..
在 Scala 中可以编写(柯里化?)这样的函数 def curriedFunc(arg1: Int) (arg2: String) = { ... } 上面的curriedFunc函数定义有两个参数列表和一个参数列表中有多个参数的函数有什么区别: def curriedFunc(arg1: Int, arg2: String) = { ... } 从数学的角度来看,这是 (curried
..
以python内置的pow()函数为例. xs = [1,2,3,4,5,6,7,8]从 functools 导入部分列表(地图(部分(pow,2),xs))>>>[2, 4, 8, 16, 32, 128, 256] 但是我如何将 xs 提高到 2 的幂? 得到[1, 4, 9, 16, 25, 49, 64] list(map(partial(pow,y=2),xs))类型错误:p
..
我使用 _ 作为占位符来创建匿名函数,问题是我无法预测 Scala 将如何转换我的代码.更准确地说,它错误地确定了我想要的匿名函数有多大. List(1,2,3) foreach println(_:Int)//错误!List(1,2,3) foreach (println(_:Int))//工作List(1,2,3) foreach(println(_:Int))//工作 使用 -Xpri
..
我已经在我的 REPL 中创建了一个部分应用函数的列表,如下所示: listOfPartiallyAppliedFunctions = map (*) [1..100] 然后我想创建完成函数应用程序的结果列表,我可以通过向 map 函数提供 lambda 来轻松完成,如下所示: let results = map (\x -> x 4) listOfPartiallyAppliedFunct
..
在像Haskell这样的函数式编程中,我可以定义函数 添加a b = a + b 然后 add 3 将返回一个带有一个参数的函数,并返回 3 +某物 如何在GO中执行此操作? 当我定义一个带有多个(例如n个)参数的函数时,我只能给它一个参数而得到另一个带有n-1个参数的函数吗? 更新: 很抱歉我原来的问题中的单词不准确. 我认为我的问题应该作为两个要求来提出:
..
赫顿说 在Haskell编程 在计算表达式时,应以什么顺序执行归约?一种常见 称为最内在评估的策略是,始终选择最内在的Redex, 不含其他redex.如果最里面的redex不止一个,按照惯例,我们选择一个 从表达式最左侧的位置开始. 评估表达式的另一种常见策略是对最内层的评估,始终是 选择一个最外部的Redex,因为它不包含在其他Redex中.如果超过 然后像以前一样选择一个这样的
..
map2_List :: (a -> b -> c) -> [a] -> [b] -> [c] map2_List f [] _ = [] map2_List f (a:as) bs = map (f a) bs ++ map2_List f as bs 这是我演讲中的一个示例,该示例尝试将二进制函数应用于两个列表的所有成对元素. (f a)部分使我感到困惑.它应该是一个值而不是一个函数吗?那
..
想知道是否可以解释以下两种情况的行为为何不同: 以下作品: var la= List(12, 13 , 14 ,15); var func = (x:Int) => println(x) la.foreach(func) // 1 la.foreach(func(_)) // 2 但是以下内容却没有: var
..
请考虑以下F#:- type TestClass() = let getValFromMap m k = Map.find k m let addToMap map k i = map |> Map.add k i let mutable someMap : Map = Map.empty let getValFromMapPar
..