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目录。