Muszę przyznać, że niewiele wiem o programowaniu funkcjonalnym. Przeczytałem o tym tu i tam, i wtedy dowiedziałem się, że w programowaniu funkcjonalnym funkcja zwraca to samo wyjście, dla tego samego wejścia, bez względu na to, ile razy funkcja jest wywoływana. To jest dokładnie jak funkcja matematyczna, która ocenia na tym samym wyjściu dla tej samej wartości parametrów wejściowych, które dotyczą wyrażenia funkcji.
Rozważmy na przykład:
f(x,y) = x*x + y; // It is a mathematical function
Bez względu na to, ile razy użyjesz f(10,4)
, zawsze będzie miała wartość 104
. Jako taki, gdziekolwiek napisałeś f(10,4)
, możesz go zastąpić 104
bez zmiany wartości całego wyrażenia. Ta właściwość jest nazywana referencyjną przezroczystością wyrażenia.
Jak mówi Wikipedia ( link ),
I odwrotnie, w kodzie funkcjonalnym wartość wyjściowa funkcji zależy tylko od argumentów wprowadzonych do funkcji, więc wywołanie funkcji f dwa razy z tą samą wartością dla argumentu x da ten sam wynik f (x) za każdym razem.
Czy funkcja programowania czasu (która zwraca aktualny czas) może istnieć w programowaniu funkcjonalnym?
Jeśli tak, to jak może istnieć? Czy nie narusza to zasady programowania funkcjonalnego? W szczególności narusza przejrzystość referencyjną, która jest jedną z właściwości programowania funkcjonalnego (jeśli dobrze to rozumiem).
A jeśli nie, to jak poznać aktualny czas w programowaniu funkcjonalnym?