Hi,
Ich bin gerade dabei mich mit Funktionaler Programmierung in Common Lisp zu beschäftigen, und ich bin gerade ein wenig verwirrt.
In meiner Literatur steht dass Zitat: "Eine Anweisung allein wegen ihres Seiteneffekts ausgeführt wird".
In Common Lisp gibt es dagegen keine Anweisungen sondern nur Ausdrücke, und daher hat selbst die normale If-Anweisung einen Funktionscharakter.
(if (< 5 4) 'groesser 'kleiner))
Es wird nicht abhängig von einer Bedinung etwas ausgeführt, sondern etwas auf Basis eines Ausdrucks zurückgegeben.
Meine Frage ist jetzt, was ist der Unterschied zwischen einem Ausdruck und einer Anweisung in einer Sprache wie C++ oder Java
Ist eine Anweisung wie diese:
int foo (int A, int B)
{
if(A < B) { ... }
else { ... }
}
direkt ein Seiteneffekt ? Ich sehe nämlich nicht inwieweit das der Fall sein sollte, da beim Funktionsaufruf die gleichen EIngabewerte immer zur gleichen Ausgabe führen sollten.
Ein Seiteneffekt wäre für mich sowas:
int foo (int A)
{
if(A < Time) {return 1} // Time irgendein Systemwert
else { return 0}
}
Also was ist der Unterschied zwischen einem Ausdruck und einer Anweisung und wan n ist etwas ein Seiteneffekt ?