【问题标题】:What is the name of a function whose result depends only on its parameters?其结果仅取决于其参数的函数的名称是什么?
【发布时间】:2010-01-13 09:03:13
【问题描述】:

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

【问题讨论】:

    标签: terminology compiler-theory computation-theory


    【解决方案1】:

    您要查找的术语是

    【讨论】:

    • 感谢上帝:我从来没有听说过 :-) 当我听到答案时,我确信我会踢自己,但不,这对我来说是全新的。谢谢大家!
    【解决方案2】:

    我想它叫Pure Function

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

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

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

    【讨论】:

      【解决方案3】:

      如果你用“纯函数”的话,我猜你可以说形容词是“纯的”。

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

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

      引用:

      给定一个特定的输入,它总是会产生相同的输出,而底层机器总是会经历相同的状态序列。

      【讨论】:

      • 确定性有不同的含义。它意味着一个需要花费已知时间来执行的函数。数量或时间不必每次都相同,但如果输入相同,则应该相同。
      • slebetman:谢谢!你有指点我,所以我可以了解更多关于这方面的信息吗? wiki 文章提到,为了具有确定性,它必须以相同的顺序通过相同的一组状态(因此会导致相同的结果),但没有提到它必须采用相同数量的这样做的时间。或许这就是你的意思?
      • 罗兰的回答是正确的:确定性是指动作的精确复制。
      猜你喜欢
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      相关资源
      最近更新 更多