Skip to content

Mostly Adequate指南:函数式编程精要

欢迎阅读《Mostly Adequate Guide to Functional Programming》!本书将教您JavaScript函数式编程的核心原理。

学习要点

  • 纯函数:编写可预测、易测试的代码
  • 组合:通过简单函数构建复杂程序
  • 柯里化:提升函数复用性的转换技巧
  • 函子与单子:优雅处理数据转换过程
  • 范畴论:函数式编程的数学基础

开始学习

建议从第一章:究竟什么是函数式编程?开启您的FP之旅。

关于本指南

本书系统讲述函数式编程范式。我们将使用全球应用最广泛的函数式语言:JavaScript。部分读者可能认为这个选择欠佳,因为它与当前主流的命令式编程文化存在理念差异。

然而,我确信这是学习FP的最佳路径,原因如下:

  • 可在日常工作中实践 您可直接将所学知识应用于实际项目开发,而非仅限业余时间用深奥的FP语言做些小项目。

  • 无需前置学习即可上手 在纯函数语言中,若未使用单子就无法记录变量或读取DOM节点。但在JavaScript中学习时,我们可在代码优化过程中灵活调整。由于语言本身支持多范式混合编程,您可在知识空缺时沿用既有实践经验逐步过渡。

  • 完全具备一流函数式编码能力 借助少量辅助库即可模拟Scala或Haskell等纯函数语言特性。当前业界虽以面向对象编程为主流,但在JavaScript中其实现却显笨拙——就像在高速公路旁扎营,或是穿着雨靴跳踢踏舞般不协调。我们必须频繁使用bind防止this意外变更;缺少真正意义上的类^1;针对忘记new关键字产生的怪异行为设计了各种变通方案;私有成员只能通过闭包实现。对多数开发者而言,函数式范式反而更符合直觉。

值得一提的是,强类型函数式语言无疑是实践本书理念的最佳选择。JavaScript将作为范式学习的桥梁,而具体应用场景由您决定。所幸这些编程接口基于数学理论,具有普适性。您将能触类旁通地适应Swiftz、Scalaz、Haskell、PureScript等数学化编程环境。

配套练习

书中各章设有配套练习,学习路径可访问GitHub仓库的exercises目录获取。

支持工具库

本书使用的辅助函数与代数数据结构存放于support目录。