在 Haskell 中,部分应用和柯里化的概念可以互换吗?

Are the concepts of partial application and currying interchangeable in Haskell?

在一些函数式语言中,部分应用函数和柯里化函数是两个相似但不同的概念。

阅读本书 Learn You a Haskell for Great Good,作者似乎在交替应用这些内容。

[Curried functions] Every function in Haskell officially only takes one parameter.

...

if we call a function with too few parameters, we get back a partially applied function, meaning a function that takes as many parameters as we left out.

我的问题是:在 Haskell 中部分应用和柯里化的概念可以互换吗?

它们是不同但相关的概念。因为函数定义是柯里化的,所以当您部分应用一个函数(即,使用比预期更少的参数调用它)时,您会得到另一个预期更少参数的函数。

柯里化过程正在用 N "layers" 个一元函数替换一个 N 元函数,以便您可以部分应用它,转向

function(x,y) {return x+y;}

进入

function(x) {return function(y) {return x+y;};}

柯里化是定义函数的一部分,部分应用是您在调用函数时对函数执行的操作。