如果应用程序改变堆栈,'pure' 在函数式编程中意味着什么?
What does 'pure' in functional programming mean if an application mutates the stack?
我们知道pure functions:
- 对于给定的输入总是return相同的结果
- 没有副作用
这将我们引向 referential transparency - 其中 可以在不改变程序行为的情况下用值替换表达式。
这告诉我们,如果一个程序 排除了程序 运行 环境中实体的破坏性修改(更新),则该程序可以说是 purely functional .
grappling with what "pure" in an FP setting actually means, considering application itself is a protocol for mutation (the stack)
我的问题是:如果应用程序改变堆栈,函数式编程中的 'pure' 是什么意思?
函数改变堆栈的事实是机器实现的结果。定义 pure 并不重要,就像使用 'value' 需要改变处理器内核中的寄存器这一事实无关紧要。
如果一个函数不改变(或依赖)它自己的堆栈框架之外的任何东西(例如全局变量、io、随机性),它仍然可以被视为纯函数。
我们知道pure functions:
- 对于给定的输入总是return相同的结果
- 没有副作用
这将我们引向 referential transparency - 其中 可以在不改变程序行为的情况下用值替换表达式。
这告诉我们,如果一个程序 排除了程序 运行 环境中实体的破坏性修改(更新),则该程序可以说是 purely functional .
grappling with what "pure" in an FP setting actually means, considering application itself is a protocol for mutation (the stack)
我的问题是:如果应用程序改变堆栈,函数式编程中的 'pure' 是什么意思?
函数改变堆栈的事实是机器实现的结果。定义 pure 并不重要,就像使用 'value' 需要改变处理器内核中的寄存器这一事实无关紧要。
如果一个函数不改变(或依赖)它自己的堆栈框架之外的任何东西(例如全局变量、io、随机性),它仍然可以被视为纯函数。