propiedades nilpotente matriz logica leyes ley idempotente idempotencia ejemplos conjuntos conjunción complemento boole absorcion function idempotent pure-function

function - logica - matriz idempotente y nilpotente



¿Son las funciones idempotentes lo mismo que las funciones puras? (6)

Leí la explicación de idempotence de Wikipedia. Sé que significa que la salida de una función está determinada por su entrada. Pero recuerdo que escuché un concepto muy similar: función pura. Los busco en Google pero no puedo encontrar la diferencia ...

¿Son equivalentes?


Función pura = Idempotente + Sin cambios en las variables de entrada.


La pureza funcional significa que no hay efectos secundarios. Por otro lado, idempotencia significa que una función es invariante con respecto a llamadas múltiples.

Cada función pura es idempotente de efectos secundarios porque las funciones puras nunca producen efectos secundarios, incluso si se llaman más de una vez. Sin embargo, la idempotencia del valor de retorno significa que f (f (x)) = f (x) que no se ve afectada por la pureza.


No, una función idempotente cambiará el estado del programa / objeto / máquina, y hará que el cambio solo una vez (a pesar de las llamadas repetidas). Una función pura no cambia nada y continúa proporcionando un resultado (de retorno) cada vez que se invoca.


Una función pura es una función sin efectos secundarios en la que la salida está determinada únicamente por la entrada, es decir, al llamar a f(x) obtendrá el mismo resultado, sin importar cuántas veces lo llame.

Una función idempotente es aquella que se puede aplicar varias veces sin cambiar el resultado; es decir, f(f(x)) es lo mismo que f(x) .

Una función puede ser pura, idempotente, ambas o ninguna.


Una función idempotente puede causar efectos secundarios idempotentes.

Una función pura no puede.

Por ejemplo, una función que establece el texto de un cuadro de texto es idempotente (porque varias llamadas mostrarán el mismo texto), pero no pura.
Del mismo modo, eliminar un registro por GUID (no por conteo) es idempotente, porque la fila permanece eliminada después de las llamadas posteriores. (llamadas adicionales no hacen nada)


Una gran fuente de confusión es que en la ciencia de la computación, parece haber diferentes definiciones de idempotencia en la programación imperativa y funcional.

De wikipedia ( https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning )

En ciencias de la computación, el término idempotente se usa de manera más exhaustiva para describir una operación que producirá los mismos resultados si se ejecuta una vez o varias veces. Esto puede tener un significado diferente según el contexto en el que se aplica. En el caso de los métodos o llamadas de subrutinas con efectos secundarios, por ejemplo, significa que el estado modificado sigue siendo el mismo después de la primera llamada. En la programación funcional, sin embargo, una función idempotente es aquella que tiene la propiedad f (f (x)) = f (x) para cualquier valor x.

Dado que una función pura no produce efectos secundarios, soy de la opinión de que la idempotencia no tiene nada que ver con la pureza.