在某些功能语言中,部分应用的函数和curried函数是两个相似但不同的概念。
阅读书籍Learn You a Haskell for Great Good,作者似乎可以互换地应用这些书。
[Curried functions] Haskell中的每个函数都只接受一个参数。
...
如果我们调用参数太少的函数,我们会返回一个部分应用的函数,这意味着一个函数会占用我们遗漏的参数。
我的问题是:部分应用和currying的概念在Haskell中是否可以互换?
答案 0 :(得分:4)
它们是不同但相关的概念。因为函数定义是curry,当你部分应用一个函数(即,用比预期更少的参数调用它)时,你会得到另一个期望更少参数的函数。
currying的过程正在用N"层替换N-ary功能。一致的功能,以便您可以部分应用它,转动
function(x,y) {return x+y;}
到
function(x) {return function(y) {return x+y;};}
currying是定义函数的一部分,部分应用程序是你在调用函数时使用的函数。