认知颠覆 · COGNITIVE OVERTURN
Monad 不是"复杂度的隐藏"而是"复杂度的命名"
初学者常觉得 Monad 把简单的事情搞复杂了——原来一个 `try-catch` 就能解决的事,为什么要搞 Option → flatMap → for-yield?但 Monad 的本质不是隐藏复杂度,而是**给复杂度命名**。当你用 `IO<A>` 类型标注一个函数时,你在说:"这个函数会做 I/O,这被类型系统记录在案了"。try-catch 不告诉编译器"这里有异常风险",而 `Result<A, E>` 会。命名使得复杂度可被工具(编译器、linter、IDE)检查。
来自这本书的解读报告
《函数式编程》
这本书回答了软件复杂度根源是什么,它的答案是消灭可变状态,用纯函数与组合来管理复杂性
阅读完整解读报告 →