在 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;};}
柯里化是定义函数的一部分,部分应用是您在调用函数时对函数执行的操作。
在一些函数式语言中,部分应用函数和柯里化函数是两个相似但不同的概念。
阅读本书 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;};}
柯里化是定义函数的一部分,部分应用是您在调用函数时对函数执行的操作。