\emph{\ifger{Referenzielle Transparenz}{Referential transparency}}, \ifger{also}{as in}: \slidep \begin{itemizep} \item \ifger{alles (Variablen, Datenstrukturen)}{everything (variables, data structures...)} \ifger{ist}{is} \emph{immutable} \item \ifger{Ausdrücke haben niemals Seiteneffekte (Erinnerung: mathematische Funktionen)}{expressions never have side-effects (remember: mathematical functions)} \item \ifger{gleiche Eingabe}{same input} $\mapsto$ \ifger{gleiche Ausgabe}{same output}... \emph{\ifger{immer}{always}}! \item \ifger{wir können eine Funktion mit ihrem (Rückgabe-)Wert ersetzen... was passiert, wenn wir das in C oder java tun? (Erinnerung:}{replace a function with it's (return) value? Yes. What happens in C or java if you do that? Remember} \cppinline{void pop();}\ifger{)}{?} \end{itemizep} \slidep \vspace{\baselineskip} \ifger{mögliche Vorteile?}{possible benefits?} \begin{itemizep} \item \ifger{Parallelisierung}{parallelism} \item \ifger{Denken in Gleichungen und hohes Refactoring-Potenzial}{equational reasoning and refactoring} \item \ifger{weniger Bugs!}{less bugs!} \end{itemizep} \slidep \vspace{\baselineskip} \ifger{Frage:}{Question:} call-by-value? call-by-reference? call-by-need?