幂等函数和纯函数一样吗?

我读了维基百科关于阳痿的解释。 我知道这意味着函数的输出是由它的输入决定的。 但我记得我听过一个非常相似的概念: 纯函数。 我谷歌了一下,但是找不到它们的区别。

它们是等价的吗?

10222 次浏览

幂等函数会导致幂等的副作用。

纯函数不能。

例如,设置文本框文本的函数是等幂的(因为多个调用将显示相同的文本) ,但不是纯函数。
类似地,通过 GUID (而不是计数)删除记录是等幂的,因为在后续调用之后仍然会删除该行。(额外的电话什么也不做)

纯洁函数是一个没有副作用的函数,其输出是由输入决定的 独自一人,也就是说,无论调用多少次,调用 f(x)都会得到相同的结果。

无能为力函数是一个可以多次应用而不改变结果的函数——也就是说,f(f(x))f(x)相同。

函数可以是纯函数、幂等函数、二者兼有函数或两者都不是。

不,幂等函数将改变程序/对象/机器的状态-并且只改变一次(尽管重复调用)。纯函数不会改变任何内容,并且每次调用它时都会继续提供(返回)结果。

功能纯度意味着没有副作用。另一方面,幂等性意味着函数对于多个调用是不变的。

每个纯函数都是副作用幂等的,因为纯函数从不产生副作用,即使它们被多次调用。然而,返回值幂等性意味着 f (f (x)) = f (x) ,这不受纯度的影响。

令人困惑的是,在计算机科学中,对于命令式编程和函数式编程中的幂等性似乎有不同的定义。

来自维基百科(https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning)

在计算机科学中,“幂等”这个术语被更全面地用来描述一个操作,如果执行一次或多次,将产生相同的结果。这可能具有不同的含义,这取决于它所应用的上下文。例如,对于带有副作用的方法或子例程调用,它意味着在第一次调用之后修改的状态保持不变。然而,在函数式编程中,幂等函数是对任意值 x 具有 f (f (x)) = f (x)性质的函数。

由于纯函数不会产生副作用,我认为幂等函数与纯度无关。

我发现有更多的地方将“幂等”定义为 f(f(x)) = f(x),但我真的不相信这是准确的。 相反,我认为这个定义更准确(但不完全准确) :

描述一个动作,当在同一动作上执行多次时 主题,并没有进一步影响其主题后,第一次它 投影运算符是幂等的。

我对此的解释是,如果我们在 x(主题)上应用 f两次:

F (x) ;

那么(副作用)就等于

F (x) ;

因为纯函数不允许副作用,所以纯函数也是微不足道的“幂等函数”。


idempotent的更一般(也更准确)的定义还包括以下函数

切换(x)

我们可以说开关 idempotencydegree是2,因为在每2次应用 toggle之后,我们总是得到相同的 State