Pregunta

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

¿Son equivalentes?

¿Fue útil?

Solución

Una función idempotente puede causar efectos secundarios ideampotentes.

Una función pura no puede.

Por ejemplo, una función que establece el texto de un cuadro de texto es ideMpotent (porque múltiples llamadas mostrarán el mismo texto), pero no puro.
Del mismo modo, eliminar un registro de GUID (no por cuenta) es ideMPOTENT, porque la fila permanece eliminada después de las llamadas posteriores. (Llamadas adicionales no hacen nada)

Otros consejos

A puro la función es una función sin efectos secundarios donde la salida está solamente determinado por la entrada, es decir, llamar f(x) dará el mismo resultado sin importar cuántas veces lo llame.

Un idempotente La función es una 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 ninguno.

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

Cada función pura es el efecto secundario idempotente 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 afectado por la pureza.

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

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

De Wikipedia (https://en.wikipedia.org/wiki/idempotence#Computer_Science_Meaning)

En informática, el término ideMpotent se usa de manera más exhaustiva para describir una operación que producirá los mismos resultados si se ejecuta una o varias veces. Esto puede tener un significado diferente dependiendo del contexto en el que se aplica. En el caso de métodos o llamadas de subrutina con efectos secundarios, por ejemplo, significa que el estado modificado sigue siendo el mismo después de la primera llamada. Sin embargo, en la programación funcional, una función idempotente es una 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.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top