为什么在Haskell中点阵风格即使有许多点也被称为无点风格?“point-free”这个术语的起源是什么?

9
我目前正在阅读《Haskell趣学指南》,在第85页上看到了“无点样式”的概念。然而,fn函数里充满了点!这让我很困惑。
  • 为什么这种写函数的方式被称为“无点样式”,而实际上它充满了点

  • 我应该如何理解“无点样式”这个概念?它是在哪个方面“无点”的?

  • “无点样式”这个术语源于何处?也许来自一种将函数组合表示为空格的语言?

注:迄今为止,这是我在这本优秀书籍中唯一感到困惑的部分(即我已经阅读的前85页)。

enter image description here


1
http://www.haskell.org/haskellwiki/Pointfree - cnd
2个回答

18
但是pointfree有更多的points!
一个常见的误解是,pointfree风格中的“points”指的是(.)运算符(函数组合,作为ASCII符号),它使用与小数点相同的标识符。这是错误的。这个术语起源于拓扑学,一种处理由点组成的空间和这些空间之间的函数的数学分支。因此,“无points”的函数定义是不会显式地提到函数作用的空间(值)的点(值)。在Haskell中,我们的“space”是某种类型,而“points”则是值。在声明f x = x + 1中,我们根据它对任意点x的作用来定义函数f。与之形成对比的是points-free版本: f = (+1),其中没有提到函数作用的值。
来自haskellwiki

7
基本上,每个局部变量都是一个“点”。没有局部变量的函数因此是“无点”的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接