【发布时间】:2018-09-06 00:47:12
【问题描述】:
在 Haskell 中有两个概念看起来并不相同,但我不明白它们的区别。它们是“无点风格”和“部分应用函数”。
对于无点样式,我将获得 this 示例:
instead of: sum xs = foldr (+) 0 xs
we can use: sum = foldr (+) 0
因为xs在两边我们可以省略。
对于部分应用的函数,我将得到this 示例:
increment = add 1
可能是increment n = add 1 n,因为在调用它的时候,你需要用参数来做,就像第一个例子一样。
那么,它们之间的真正区别是什么?
但是,对我来说,最后都是一样的。
【问题讨论】:
-
如果您记得实际上没有部分应用函数这样的东西,它会有所帮助。您要么将函数应用于其单个必需参数,要么不。
(+)是一个接受一个参数并返回 another 函数的函数,而 Haskell 的语法让您可以假装(+) 3 5是一个应用于两个参数的函数,这对于使用显式括号更难做到版本((+) 3) 5。从某种意义上说,“完全应用”的函数只是一个不返回另一个函数的表达式。 -
好答案,谢谢
标签: haskell pointfree partial-application