Devo admitir que não sei muito sobre programação funcional. Eu li sobre isso daqui e dali e, assim, soube que na programação funcional, uma função retorna a mesma saída, para a mesma entrada, não importa quantas vezes a função seja chamada. É exatamente como uma função matemática que avalia a mesma saída para o mesmo valor dos parâmetros de entrada que envolvem a expressão da função.
Por exemplo, considere isso:
f(x,y) = x*x + y; // It is a mathematical function
Não importa quantas vezes você use f(10,4)
, seu valor sempre será 104
. Assim, onde quer que você tenha escrito f(10,4)
, você pode substituí-lo por 104
, sem alterar o valor de toda a expressão. Essa propriedade é chamada de transparência referencial de uma expressão.
Como a Wikipedia diz ( link ),
Por outro lado, no código funcional, o valor de saída de uma função depende apenas dos argumentos introduzidos na função, portanto, chamar uma função f duas vezes com o mesmo valor para um argumento x produzirá o mesmo resultado f (x) nas duas vezes.
Pode uma função de hora (que retorna a hora atual ) existir na programação funcional?
Se sim, então como pode existir? Não viola o princípio da programação funcional? Isso viola particularmente a transparência referencial, que é uma das propriedades da programação funcional (se bem entendi).
Ou, se não, como saber a hora atual da programação funcional?