Solución:
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.
De manera similar, eliminar un registro por GUID (no por recuento) es idempotente, porque la fila permanece eliminada después de llamadas posteriores. (las llamadas adicionales no hacen nada)
A puro La función es una función sin efectos secundarios donde la salida es solamente determinada por la entrada, es decir, llamando 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 ninguna.
No, una función idempotente cambiará el estado del programa / objeto / 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 (de retorno) cada vez que se llama.