可以多次应用并且永远不会改变状态的单词是什么?


38

我想记住一个单词,我认为它与计算或数据库理论有关。最接近的同义词是,atomic但不完全是。基本上,这是一种计算,即使连续运行多次也应产生相同的结果,这意味着它不会自己产生副作用。

我在有关chmod命令(或其他一些与权限相关的操作)的堆栈溢出答案中专门遇到了这个词。

希望这足以进行下去。在Wikipedia上戳戳并没有太大帮助。


5
指定是将相同的输入传递给每个操作调用还是对上一个调用的结果运行每个下一个操作是有意义的。
maxim1000

3
@ maxim1000同意。从答案的多样性来看,没人能确定OP的含义。
2013年

这里的问题是主题中的问题与身体中的问题并不完全相同。我回答了主题中的那个,但现在再次看,我很确定那不是海报想要的。编辑问题,删除答案
pdr

您是在询问类似GET请求(每次都返回相同结果)的问题,还是在询问类似赋值运算符的问题(确实有效果,但是重复相同的赋值不会改变任何内容) )?
Izkata

Answers:


91

您可能会想到“ 幂等 ”。

幂等是数学和计算机科学中某些运算的属性,它们可以多次应用而不会在初始应用之外改变结果。


16
基本上,f是幂等的IFF f(f(x)) == f(x)FORALL x
约尔格W¯¯米塔格

1
描述的有趣限制-链接页面的谈话部分讨论了电梯按钮。必须有1000项行为,这些行为可以描述为与数学或Comp Sci不相关的“幂等”。
mattnz

从我对问题的理解来看,这根本不是OP所要问的,因为他没有提到将算法应用于第一次迭代的结果,而是将其重新应用于相同的源数据。如果x = y,则更像F(x)= F(y)
Joubarc

2
@Joubarc是,幂等在计算上的含义比其他数学要宽松一些,因此是正确的。zh.wikipedia.org/wiki/Idempotent#Computer_science_意义
jk。

1
@Joubarc这只是意味着它是一个函数。从数学的角度来看,不能将在同一输入上可能具有不同作用的运算称为函数。如果在编程中将它们称为函数,那么实际上总是为相同输入提供相同输出的pure函数就称为函数……好吧,它们也完全没有副作用。
Paul Stelian

12

通用词是幂等,它适用于计算机和数学。它与可重入通常不是一回事,它常常会引起混淆。幂等正是您所描述的,可重入基本上可以中断您从上次中断的地方开始的能力。

像Haskell这样的纯函数式语言都是基于尽可能接近幂等的原则构建的。在数据库理论中,首字母缩写ACID的前三个字母是等幂,应用于数据库。


10

您可能正在寻找纯函数

如链接中所定义,两个条件使一个函数纯净:

  1. 给定相同的参数值,该函数始终求值相同的结果值。
  2. 结果评估不会引起任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I / O设备。

4
纯度超越了简单的幂等:纯函数根本不会有任何副作用,而幂等则可能有副作用,只要它们不会导致后续运行执行不同的操作即可。例如,使用局部可变变量的函数不是纯函数,但可能是幂等的。您甚至可以编写一个使用全局变量并且仍然幂等的函数,只要您确保该函数保护这些全局变量使其可重入即可。
tdammers

3
@tdammers纯度和幂等性是完全正交的:一个纯函数不必是幂等的,反之亦然。例如,f(x) := x + 1是纯净的,但肯定不是幂等的。
Konrad Rudolph


0

另一种可能性是确定性的

在计算机科学中,确定性算法是一种算法,在给定特定输入的情况下,它将始终产生相同的输出,而底层计算机始终通过相同的状态序列。


1
这已经在刚刚删除的先前答案中了;对此想法提出质疑的评论是:“这是错误的。例如,交换两个值的算法是完全确定性的,但是两次运行将不会产生与一次运行相同的结果。”
t 2013年

2
目前尚不清楚这是否能回答原始问题,因为原始问题的措词不太好,但我对这一答复表示赞成,因为确定性一词很可能是某人最终找到的那个词这里。
理查德·怀特黑德

如果在下一次运行之前对输入值进行了突变,那么如何声明为例程提供了完全相同的参数值。
Hein Haraldson Berg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.