每个程序只做好一件事情。为了完成一项新的任务,重新构建要好于在复杂的旧程序中添加新“属性”。
每个程序的输出应该是另一个尚未可知的程序的输入。
—Ken Thompson
关于“函数式编程”这个话题,本书是一本名副其实的入门书籍。作者以简明的JavaScript代码,描述了函数式编程中的几个重要概念:纯函数、高阶函数、柯里化、部分应用、组合、函子。
引用透明是纯函数的重要特性,使得计算可缓存、可并发,代码易于测试。
通过降低元数,柯里化与部分应用增强了函数的可重用性。组合的重要特性就是满足结合律。
函子是一种具有容错性、可链式调用、持有值的容器。Promise是一种类似于函子的容器,只不过持有的是状态。它们都将分散的异常传往调用链的末端,以实现异常的集中处理。
文摘
函数式编程是一种范式,我们能够以此创建仅依赖输入就可以完成自身逻辑的函数。这保证了当函数被多次调用时仍然返回相同的结果。函数不会改变任何外部环境的变量,这将产生可缓存的、可测试的代码库。
柯里化是把一个多参数函数转换为一个嵌套的一元函数的过程。