问题标签 [currying]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4968 浏览

function - 带有隐式的 Scala 函数文字

请原谅我是否已经在其他地方问过这个问题。我有一个涉及函数值和隐式参数的 Scala 语法问题。

我很乐意使用 Scala 的柯里化功能的隐式。例如,如果我有一个 sum 函数并希望将第二个参数设为隐式:

有没有办法使用函数值语法来做到这一点?暂时忽略隐式,我通常这样编写柯里化函数值:

但是,第二种方法中的函数签名有很大不同(明确表达了柯里化)。只是将隐式关键字添加到 b 没有多大意义,编译器也会抱怨:

此外,从第一种方法中部分应用 sum 来获得函数值也会导致问题:

这使我相信具有隐式参数的函数必须在创建函数值时确定所述参数,而不是在稍后应用函数值时确定。真的是这样吗?你可以使用带有函数值的隐式参数吗?

谢谢您的帮助!

0 投票
3 回答
9420 浏览

scheme - 咖喱计划

我有这个curry功能:

我认为它就像(define curry (f a b))

consElem2All我的任务是使用编写一个函数curry,它应该像

我以常规方式编写了此函数:

但仍然不知道如何用curry. 谁能帮我?

提前致谢

熊熊

0 投票
3 回答
643 浏览

functional-programming - 函数式编程中柯里化的价值是什么?

我知道柯里化的概念和使用方法,但我想知道它在实践中的价值是什么?

0 投票
2 回答
157 浏览

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

我目前有一个部分应用程序功能,如下所示:

问题是它只适用于非成员函数,例如:

如何改写 curry 函数以应用于成员函数,如:

0 投票
5 回答
10964 浏览

haskell - 柯里化是如何工作的?

一般来说,我对 Haskell 和 FP 很陌生。我已经阅读了许多描述什么是柯里化的著作,但我还没有找到关于它实际上是如何工作的解释。

这是一个函数:(+) :: a -> (a -> a) 如果我这样做(+) 4 7,该函数接受4并返回一个接受7并返回的函数11。但是会发生什么4?第一个函数有什么作用4?有什么(a -> a)7

当我想到一个更复杂的函数时,事情变得更加混乱:

(Int -> Int)将其参数与什么进行比较?它只需要一个参数,但它需要两个来做m > n

0 投票
3 回答
682 浏览

functional-programming - Haskell 函数定义语法

我正在通过以下方式进行列表连接(例如,使用 GHC):

有人可以向我解释一下上述定义为什么以及如何工作,而这个没有:

是故意不允许最后一行代码(由于结构可能会变得混乱,它无用等原因)还是更深层次的东西,可能与currying有关......

我希望我能对此有所了解,这真的让我很困惑:/

后期编辑:除了下面给出的解释之外,我发现关于此事的一个很好的信息来源是第 1 章的“部分函数应用和柯里化”部分4 来自“Real World Haskell”一书的“函数式编程” 。该书可在线免费获取。

0 投票
4 回答
8978 浏览

scala - Scala中的多个参数列表和每个列表的多个参数有什么区别?

在 Scala 中,可以编写(咖喱?)这样的函数

curriedFunc上述带有两个参数列表的函数定义与在单个参数列表中带有多个参数的函数有什么区别:

从数学的角度来看,这是(curriedFunc(x))(y)curriedFunc(x,y)但我可以写def sum(x) (y) = x + y,同样会是def sum2(x, y) = x + y

我只知道一个区别 - 这是部分应用的功能。但两种方式对我来说都是等价的。

还有其他区别吗?

0 投票
3 回答
560 浏览

haskell - 在 Scheme 中为地图柯里化

我了解 Haskell 语法。

我想咖喱(部分应用)一个名为“play-note”的函数,并“手动”传递一个参数,第二个参数带有地图。

如果我可以用 Haskell 编写它,我会说:

在 Scheme 中,这是我所拥有的最好的:

Scheme 版本“编译”,但没有按照我的预期做(咖喱第一个参数,然后是第二个)。帮助?谢谢!

编辑:
我的问题的本质是无法定义一个接受两个参数的函数,以使以下代码产生正确的结果:

0 投票
3 回答
1474 浏览

scala - Scala,柯里化和重载

假设您有以下内容:

Scala 不允许这样的表达。据我所知,原因是 foo("asdf") 没有明确定义的类型(它是 Int => Int 或 Double => Int)。

是否有理由不允许这种“多型”功能?

0 投票
3 回答
3121 浏览

function - Haskell 有可变参数函数/元组吗?

uncurry函数仅适用于采用两个参数的函数:

如果我想对具有任意数量参数的函数进行 uncurry,我可以编写单独的函数:

但这很快就会变得乏味。有什么方法可以概括这一点,所以我只需要编写一个函数吗?