# 伍.2.3 Pointfree无参数风格编程

[上一篇](../5.2.2#quan-bu-ke-li-hua-de-mu-de-shi-shen-me-ne)讲到了一个Pointfree的例子。

## 01.什么是Pointfree

Pointfree仍是一种新事物，仍还在快速演绎变化中，因此笔者不会刻意为这种编程风格下定义，而是通过列举更多的例子，可以让读者了解什么是Pointfree。

```javascript
//todo
```

## 02.Pointfree的用处到底是什么？

Pointfree 风格需要一定的时间才能习惯。可能并不需要所有的地方都没有参数。有时候知道某些 Ramda 函数需要多少参数，也是很重要的。

但是，一旦习惯了这种方式，它将变得非常强大：可以以非常有趣的方式将很多小的 pointfree 函数组合起来。

Pointfree 风格的优点是什么呢？人们可能会认为，这只不过是为了让函数式编程变得“好看一点”的学术活动而已。然而，我认为还是有一些优点的，即使需要花一些时间来习惯这种方式也是值得的：

* 它让编程更简单、精练。虽然这并不总是一件好事，但大部分情况下是这样的。
* 它让算法更清晰。通过只关注正在组合的函数，我们可以在没有参数的干扰下，更好地了解发生了什么。促使我们更专注于正在做的转换的本身，而不是正被转换的数据。
* 它可以帮助我们将函数视为可以作用于不同数据的通用构建模块，而非对特定类型数据的操作。如果给数据一个名字，我们的思想便会被禁锢在："需要在哪里使用我们的函数"；如果去掉参数，便会使我们更有创造力。

## 参考文献

{% hint style="info" %}
[Thinking in Ramda: Pointfree Style](https://randycoulman.com/blog/2016/06/21/thinking-in-ramda-pointfree-style/)
{% endhint %}
