主要观点:科幻中常以折叠纸张解释超空间旅行,而指令式代码倾向于直线解决问题,会导致代码结构混乱,如许多代码库只是做事清单的堆砌。Haskell 则需像用 FTL 演示的科学家那样,将问题空间折叠,构建从下往上的小事物并创建丰富的组合生态系统,功能性编程能削减状态空间至所需,而指令式编程虽可组合代码但在粒度上不如 Haskell。
关键信息:
- 指令式代码常指数级扩大程序状态空间,功能编程则削减至所需。
- Haskell 通过构建小事物并创建组合生态系统实现目标,如“monads”。
- 以在公司 Wiki 中提取页面为 JSON 为例,说明用特定方式编写代码的优势。
- 正在进行的工作中用统一接口替代冗长的指令列表,更易理解。
- “middleware”概念在服务器世界中很强大,编程语言本身也有此概念。
- 功能性编程迫使人们熟悉并处理这种架构的陷阱。
重要细节:
- 指令式代码直接在做新事情的中间添加代码,虽有函数和模块但架构混乱。
- 在 Haskell 中,“STM (IO a)”类型签名体现纯代码与安全事务性代码的融合。
- 用 XPath 提取 Wiki 页面数据的代码示例,展示简单组合可实现复杂提取。
- 插件或解释器架构并非新鲜事,功能性编程促使人们更好处理。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。