4

我正在编写一个玩具编译器,如果结果仅取决于参数的值,它可以优化函数调用。所以像 xor 和 concatenate 这样的函数只依赖于它们的输入,用相同的输入调用它们总是给出相同的输出。但是像 time 和 rand 这样的函数依赖于“隐藏”的程序状态,使用相同的输入调用它们可能会产生不同的输出。我只是想弄清楚区分这两种功能的形容词是什么,例如“同构”或“可重入”之类的。有人能告诉我我要找的词吗?

4

3 回答 3

8

您正在寻找的术语是Pure

于 2010-01-13T09:05:33.747 回答
7

我认为它被称为纯函数

在计算机编程中,如果关于函数的以下两个陈述都成立,则可以将函数描述为纯函数:

  • 给定相同的参数值,该函数始终评估相同的结果值。函数结果值不能依赖于任何可能随着程序执行或程序的不同执行而改变的隐藏信息或状态,也不能依赖于来自 I/O 设备的任何外部输入。
  • 结果的评估不会导致任何语义上可观察的副作用或输出,例如可变对象的突变或输出到 I/O 设备。

结果值不必依赖于所有(或任何)参数值。但是,它必须依赖于参数值。

于 2010-01-13T09:06:19.333 回答
3

如果您使用“纯函数”,我想您可以说形容词是“纯的”。

我总是了解到,当参数始终相同时,其输出始终相同的函数称为“确定性”。就个人而言,我觉得这是一个更具描述性的术语。我猜“纯函数”根据定义是确定性的,而且似乎纯函数也需要没有任何副作用。我假设并非所有确定性函数都是这种情况(只要相同参数的返回值始终相同)。

维基百科链接:http ://en.wikipedia.org/wiki/Deterministic_algorithm

引用:

给定一个特定的输入,它总是会产生相同的输出,并且底层机器总是会通过相同的状态序列。

于 2010-01-13T09:19:26.343 回答