我正在编写一个玩具编译器,它可以优化函数调用,如果结果只取决于参数的值。因此xor和concatenate等函数仅依赖于它们的输入,使用相同的输入调用它们总是提供相同的输出。但是时间和rand等函数依赖于“隐藏”程序状态,并且使用相同的输入调用它们可能会给出不同的输出。我只是试图找出区分这两种功能的形容词是什么,比如“同构”或“重入”等等。有人能告诉我我要找的那个词吗?
答案 0 :(得分:8)
您正在寻找的术语是纯
答案 1 :(得分:7)
我认为它被称为Pure Function:
在计算机编程中,如果关于函数的这两个语句都成立,则函数可以被描述为纯函数:
- 在给定相同参数值的情况下,函数始终评估相同的结果值。函数结果值不能依赖于程序执行过程中或程序的不同执行之间可能发生变化的任何隐藏信息或状态,也不依赖于I / O设备的任何外部输入。
- 评估结果不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I / O设备。
结果值不需要依赖于所有(或任何)参数值。但是,它必须仅依赖于参数值。
答案 2 :(得分:3)
如果你选择“纯粹的功能”,我想你可以说形容词是“纯粹的”。
我总是知道当参数总是相同时输出总是相同的函数称为“确定性”。就个人而言,我觉得这是一个更具描述性的术语。我认为“纯函数”在定义上是确定性的,似乎纯函数也需要没有任何副作用。我假设所有确定性函数都不需要这样(只要相同参数的返回值总是相同的)。
维基百科链接:http://en.wikipedia.org/wiki/Deterministic_algorithm
引用:
给定特定输入,它将始终产生相同的输出,并且底层机器将始终通过相同的状态序列。