Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 什么是';纯';在函数式编程中,是指应用程序是否改变堆栈?_Functional Programming_Side Effects_Purely Functional_Mutation_Referential Transparency - Fatal编程技术网

Functional programming 什么是';纯';在函数式编程中,是指应用程序是否改变堆栈?

Functional programming 什么是';纯';在函数式编程中,是指应用程序是否改变堆栈?,functional-programming,side-effects,purely-functional,mutation,referential-transparency,Functional Programming,Side Effects,Purely Functional,Mutation,Referential Transparency,我们知道: 对于给定的输入,始终返回相同的结果 无副作用 这就导致了-表达式可以用值替换,而不改变程序的行为 这告诉我们,如果一个程序在运行环境中排除了对实体的破坏性修改(更新),那么它可以被称为是 这: 考虑到应用程序本身是一个用于变异的协议(堆栈),在FP设置中“纯”实际上意味着什么 我的问题是:如果应用程序改变堆栈,“纯”在函数编程中意味着什么?函数改变堆栈的事实是机器实现的结果。定义pure并不重要,正如使用“值”需要在处理器核心中修改寄存器这一事实并不重要 如果函数不改变(或依赖于)自

我们知道:

  • 对于给定的输入,始终返回相同的结果
  • 无副作用
  • 这就导致了-表达式可以用值替换,而不改变程序的行为

    这告诉我们,如果一个程序在运行环境中排除了对实体的破坏性修改(更新),那么它可以被称为是

    这:

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


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

    函数改变堆栈的事实是机器实现的结果。定义pure并不重要,正如使用“值”需要在处理器核心中修改寄存器这一事实并不重要


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

    函数改变堆栈的事实是机器实现的结果。定义pure并不重要,正如使用“值”需要在处理器核心中修改寄存器这一事实并不重要


    如果一个函数没有变异(或依赖于)其自身堆栈框架之外的任何东西(例如全局变量、io、随机性),它仍然可以被视为纯函数。

    如果堆栈不存在,这意味着什么?堆栈只是一个实现细节,在定义“pure”函数时应该无关紧要。如果堆栈不存在,这意味着什么?堆栈只是一个实现细节,在定义“纯”函数时应该无关紧要。是否有可能实现一台没有改变堆栈的机器?当然也有一些实现没有改变“堆栈”,甚至没有堆栈,但我相当肯定有一台计算某些东西的物理机器将发生变异(我很想听到我错了)。你能指出这样一个非堆栈变异机器实现吗?它需要有子例程吗?:)我不确定您到底在寻找什么,但您可以尝试(它没有系统堆栈/堆栈指针),(它几乎仍然有一个堆栈,它只是在堆中)和(可以使用系统堆栈或堆来实现)。有没有可能实现一台不改变堆栈的机器?当然也有一些实现不改变“堆栈”甚至没有堆栈,但我相当肯定有一台计算某些东西的物理机器将要改变(尽管我很想听到我错了)。您能指出这样一个非堆栈变异机器实现吗?它需要有子例程吗?:)我不确定您到底在寻找什么,但您可以尝试(它没有系统堆栈/堆栈指针),(它几乎仍然有一个堆栈,它只是在堆中)和(可以使用系统堆栈或堆来实现)。