0

我们知道纯函数

  1. 始终为给定输入返回相同的结果
  2. 不产生副作用

这使我们实现了引用透明性——在不改变程序行为的情况下,可以将表达式替换为值

这告诉我们,如果一个程序排除了程序运行环境中实体的破坏性修改(更新),则可以说它是纯功能性的。

这位评论员写道

考虑到 FP 设置中的“纯”实际意味着什么,考虑到应用程序本身是一个突变协议(堆栈)

我的问题是:如果应用程序改变堆栈,函数式编程中的“纯”意味着什么?

4

1 回答 1

2

函数改变堆栈的事实是机器实现的结果。定义 pure 无关紧要,就像使用“值”需要改变处理器内核中的寄存器这一事实无关紧要。

如果一个函数不改变(或依赖)它自己的堆栈帧外部的任何东西(例如全局变量、io、随机性),它仍然可以被视为纯函数。

于 2016-03-11T04:10:20.063 回答