Mat*_*xon 4 compiler-theory terminology computation-theory
我正在编写一个玩具编译器,它可以优化函数调用,如果结果只取决于参数的值.因此xor和concatenate等函数仅依赖于它们的输入,使用相同的输入调用它们总是提供相同的输出.但是时间和rand等函数依赖于"隐藏"程序状态,并且使用相同的输入调用它们可能会给出不同的输出.我只是试图找出区分这两种功能的形容词是什么,比如"同构"或"重入"等等.有人能告诉我我正在寻找的这个词吗?
我认为它叫做Pure Function:
在计算机编程中,如果关于函数的这两个语句都成立,则函数可以被描述为纯函数:
- 在给定相同参数值的情况下,该函数始终评估相同的结果值.函数结果值不能依赖于程序执行过程中或程序的不同执行之间可能发生变化的任何隐藏信息或状态,也不依赖于来自I/O设备的任何外部输入.
- 对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I/O设备.
结果值不需要依赖于所有(或任何)参数值.但是,它必须仅依赖于参数值.