Ich muss zugeben, dass ich nicht viel über funktionale Programmierung weiß. Ich habe von hier und da darüber gelesen und festgestellt, dass bei der funktionalen Programmierung eine Funktion dieselbe Ausgabe für dieselbe Eingabe zurückgibt, unabhängig davon, wie oft die Funktion aufgerufen wird. Es ist genau wie eine mathematische Funktion, die dieselbe Ausgabe für denselben Wert der Eingabeparameter auswertet, die im Funktionsausdruck enthalten sind.
Betrachten Sie zum Beispiel Folgendes:
f(x,y) = x*x + y; // It is a mathematical function
Egal wie oft Sie verwenden f(10,4)
, sein Wert wird immer sein 104
. Wo immer Sie geschrieben haben f(10,4)
, können Sie es durch ersetzen 104
, ohne den Wert des gesamten Ausdrucks zu ändern. Diese Eigenschaft wird als referenzielle Transparenz eines Ausdrucks bezeichnet.
Wie Wikipedia sagt ( Link ),
Umgekehrt hängt im Funktionscode der Ausgabewert einer Funktion nur von den Argumenten ab, die in die Funktion eingegeben werden. Wenn Sie also eine Funktion f zweimal mit demselben Wert für ein Argument x aufrufen, erhalten Sie beide Male dasselbe Ergebnis f (x).
Kann eine Zeitfunktion (die die aktuelle Zeit zurückgibt ) in der Funktionsprogrammierung vorhanden sein?
Wenn ja, wie kann es dann existieren? Verstößt es nicht gegen das Prinzip der funktionalen Programmierung? Es verletzt insbesondere die referenzielle Transparenz, die eine der Eigenschaften der funktionalen Programmierung ist (wenn ich sie richtig verstehe).
Oder wenn nein, wie kann man dann die aktuelle Zeit in der funktionalen Programmierung kennen?