什么是'纯粹'在函数式编程中意味着应用程序是否会改变堆栈?

时间:2016-03-11 03:45:18

标签: functional-programming side-effects purely-functional mutation referential-transparency

我们知道pure functions

  1. 始终为给定输入返回相同的结果
  2. 不产生副作用
  3. 这导致我们referential transparency - 其中表达式可以用值替换,而不会改变程序的行为

    这告诉我们,如果某个程序排除了程序运行环境中实体的破坏性修改(更新),则该程序可以说是purely functional

    commentator wrote

      

    努力解决"纯粹的"在FP设置实际上意味着,考虑应用程序本身是一个变异协议(堆栈)

    我的问题是:' pure'函数式编程意味着应用程序是否会改变堆栈?

1 个答案:

答案 0 :(得分:2)

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

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