Fachkonzept - let-Ausdrücke
Lokale Definitionen verwenden
Wir betrachten hier noch einmal das Umkehrverfahren zur Verschlüsselung kurzer Texte, die aus einer geraden Anzahl von Zeichen bestehen.
MORGEN -> MOR GEN -> ROM NEG -> ROMNEG FRUEHSTUECKSEI -> FRUEHST UECKSEI -> TSHEURF IESKCUE -> TSHEURFIESKCUE
Das Umkehrverfahren lässt sich für Zeichenketten mit gerader Länge mit folgender Funktionsdefinition implementieren.
verschluesselterText text =
String.reverse (String.left (String.length text // 2) text) ++
String.reverse (String.right (String.length text // 2) text)
Der Ausdruck ist recht komplex und daher für Anfänger schwer zu durchschauen. Einfacher zu lesen wird er, wenn man Teilausdrücke mit Hilfe lokaler Konstanten auslagert.
verschluesselterText text =
let
halbeLaenge = String.length text // 2
linkerTeil = String.left halbeLaenge text
rechterTeil = String.right halbeLaenge text
in
String.reverse linkerTeil ++ String.reverse rechterTeil
Diese Auslagerung hat auch den Vorteil, dass der Teilausdruck
String.length text // 2
nur einmal vorkommt und daher auch nur einmal
ausgewertet werden muss.
Die Auslagerung erfolgt mit einem let-Ausdruck.
Mit einem let-Ausdruck kann man lokale Definitionen einführen. Die definierten Namen für lokale Konstanten (oder auch lokale Funktionen) sind nur innerhalb der betreffenden Funktion verwendbar.
Lokale Konstanten benutzt man, um Teilausdrücke aus einem komplexen Ausdruck auszulagern. Dieses Vorgehen ermöglicht es den Ausdruck übersichtlicher zu gestalten und eine mehrfache Auswertung identischer Teilausdrücke zu vermeiden.