Tengo que admitir que no sé mucho sobre programación funcional. Lo leí de aquí y de allá, y entonces supe que en la programación funcional, una función devuelve la misma salida, para la misma entrada, sin importar cuántas veces se llame a la función. Es exactamente como una función matemática que evalúa la misma salida para el mismo valor de los parámetros de entrada que implica la expresión de la función.
Por ejemplo, considere esto:
f(x,y) = x*x + y; // It is a mathematical function
No importa cuántas veces use f(10,4)
, su valor siempre será 104
. Como tal, donde sea que haya escrito f(10,4)
, puede reemplazarlo 104
sin alterar el valor de toda la expresión. Esta propiedad se conoce como transparencia referencial de una expresión.
Como dice Wikipedia ( enlace ),
Por el contrario, en el código funcional, el valor de salida de una función depende solo de los argumentos que se ingresan a la función, por lo que llamar a una función f dos veces con el mismo valor para un argumento x producirá el mismo resultado f (x) las dos veces.
¿Puede existir una función de tiempo (que devuelve la hora actual ) en la programación funcional?
En caso afirmativo, ¿cómo puede existir? ¿No viola el principio de programación funcional? Viola particularmente la transparencia referencial, que es una de las propiedades de la programación funcional (si la entiendo correctamente).
O si no, ¿cómo se puede saber la hora actual en la programación funcional?