【问题标题】:point-free style and partially applied functions无点样式和部分应用函数
【发布时间】: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


【解决方案1】:

Pointfree 风格——一种函数实现的风格

部分应用函数 - 它是一种创建新函数的技术

Point-free 使用部分应用的函数,但还有其他技术和组合器https://wiki.haskell.org/Pointfree

另一种常见的无点技术是函数组合

plus2 = increment . increment

【讨论】:

  • 我总是觉得很讽刺的是,无点 Haskell 代码中特别充斥着. 点...
猜你喜欢
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2016-06-06
相关资源
最近更新 更多