Digamos que tenemos una función pura normal como
function add(a, b) {
return a + b
}
Y luego lo modificamos de modo que tenga un efecto secundario
function add(a, b) {
writeToDatabase(Math.random())
return a + b;
}
Por lo que sé, no se considera una función pura porque a menudo escucho que las personas llaman a las funciones puras "funciones sin efectos secundarios". Sin embargo, se comporta como una función pura en cuanto al hecho de que devolverá la misma salida para las mismas entradas.
¿Hay un nombre diferente para este tipo de función, no tiene nombre o sigue siendo puro y estoy equivocado acerca de la definición de pureza?
writeToDatabase
falla, podría desencadenar una excepción, haciendo que su segunda add
función produzca una excepción a veces incluso si se llama con los mismos argumentos que antes no tenían problemas ... la mayoría de las veces tener efectos secundarios introduce este tipo de condiciones relacionadas con errores que se rompen "pureza de entrada-salida".
F(x)
se define para devolver true
si se llama con el mismo argumento que la llamada anterior. Claramente con la secuencia {1,2,2} => {undefined, false, true}
esto es determinista, pero da diferentes resultados para F(2)
.