知识卡片

纯函数与引用透明

普通读书笔记卡 · 1979.y

内容

纯函数即没有“副作用”的函数(副作用如:修改变量/数据结构/对象成员、抛异常或以错误终止、读写文件、读写终端、绘屏等)。分离副作用后,调用函数返回的结果与直接使用该结果具有相同效果、可互相替换,称为引用透明(referential transparency),可用其替换性验证一个函数是否为纯函数。例:parse(rosterPath) 因内部读文件而非纯函数(结果由文件内容而非路径参数决定),把读文件推向外部、改为 parse(content: List[String]) 即恢复引用透明。发散:想让一段逻辑可测试/可推理,先把 IO 等副作用挪到边界,让核心函数只做“输入→输出”的纯转换。

参考来源

- 位置:《解构领域驱动设计》附录A A.3.2(源文件:_epub-src/OEBPS/034.xhtml) - 结论依据:原文列举常见副作用并以 parse 例说明如何通过分离副作用恢复引用透明。 - 原始内容:一旦去掉副作用,调用函数返回的结果就与直接使用返回结果具有相同效果,二者可以互相替换,这称为引用透明(referential transparency)。