Fachkonzept: Definitionen und Unveränderlichkeit
Definitionen in Racket
In Racket ist es möglich Programmierelemente (z.B. Daten, Ausdrücke oder Funktionen) einen Namen zuzuordnen. Der Name kann anstelle des definierten Elements verwendet werden.
Mit einer Definition ordnet man Daten, Ausdrücken oder Funktionen einen
Definitionsnamen zu. Dieser kann anstelle des definierten Elements genutzt werden.
Eine Definition ist immer eindeutig und unveränderlich.
Eine Definition in Racket wird mit dem Schlüsselwort define
gesetzt:
(define Definitionsname zu-definierendes-Element)
Eine Definition kann sowohl innerhalb, als auch außerhalb eines Funktionskörpers erfolgen.
Eine lokale Definition ist eine Definition die innerhalb
eines Funktionskörpers gesetzt wird. Eine lokale Definition kann nur innerhalb der Funktion genutzt werden.
Eine Definition die nicht lokal ist nennen wir eine globale Definition. Wenn der Definitionsname
einer lokalen und globalen Definition identisch ist, wird die lokale Definition genutzt.
Beispiel
(define globaleDefinition 10)
(define globalerFunktionsname
(lambda (x)
(define lokaleDefinition 20)
(* (+ x lokaleDefinition) globaleDefinition)
))
Unveränderlichkeit in der funktionalen Programmierung
In funktionalen Programmiersprachen sind sämtliche Daten unveränderlich. Das bedeutet auch, dass es keine klassischen Variablen, wie in anderen Programmierparadigmen gibt.
Die Unveränderlichkeit (Immutability) ist eine zentrale Eigenschaft funktionaler Programmiersprachen.
Unveränderlichkeit bedeutet, dass bestehende Daten nicht verändert werden können, sondern bei Änderungen neue Daten erzeugt werden.
Unveränderlichkeit bedeutet, dass bestehende Daten nicht verändert werden können, sondern bei Änderungen neue Daten erzeugt werden.