Partielle Funktionsanwendung
Flexibilisierung des Caesar-Verfahrens
Der Überlieferung nach nutzte Caesar zur Verschlüsselung immer eine Verschiebung um
drei Buchstaben. Mit Hilfe einer anderen Verschiebezahl, also eines anderen Schlüssels
zur Verschlüsselung, kann man das Verfahren flexibilisieren.
Wir müssen dazu nur die Zahl 3
durch einen Parameter
schluessel
ersetzen:
verschiebeZeichen : Int -> Char -> Char
verschiebeZeichen schluessel zeichen =
Char.fromCode (modBy 26 (Char.toCode zeichen - 65 + schluessel) + 65)
Aufgabe 1
Erkläre warum wir diese Funktion so nicht direkt anwenden können, um mit Hilfe von
String.map verschiebeZeichen "HALLO"
eine Zeichenkette zu verschlüsseln.Argumentiere mit der Zahl der Parameter, die wir bräuchten und der Zahl der Parameter, die wir haben.
Experimente in der REPL
Wir führen wieder einige Experimente in der REPL durch.
> verschiebeZeichen
...
> verschiebeZeichen 1
...
> f = verschiebeZeichen 1
...
> f 'H'
...
> f 'Z'
...
> String.map f "HALLO"
...
> String.map (verschiebeZeichen 1) "HALLO"
...
Aufgabe 2
Formuliere eine Vermutung welche Ausgabe jeder Ausruck in der REPL bewirkt.
Überprüfe deine Vermutung in der REPL.
Aufgabe 3
Schreibe eine Funktion
verschiebeText schluessel klartext
, die einen
Text anhand des übergebenen Schlüssels nach dem Caesar-Verfahren verschlüsselt.