Till Mossakowski Stephan Günther Funktionale Programmierung - Fortgeschrittene Konzepte und Anwendungen
WS 2019/20
1. Übungsblatt
Ausgabe: 2019-10-15 Abgabe: 2019-10-17
Dieses Übungsblatt dient zum Warmwerden mit Haskell. Nutzen Sie es dazu, sich mit der Benutzung der Sprache (Syntax, Interpreter/Compiler, Fehlermeldungen etc.) vertraut zu machen.
Erste Schritte mit Haskell
Befolgen Sie die folgenden Schritte, um eine lauffähige Haskell-Umgebung auf Ihrem System einzurichten und die Übungsaufgabe lösen zu können.
1. Installieren Sie dieHaskellauf eine der unterhttps://www.haskell.org/downloads/vorgestellten Varianten.
Am Ende des Prozesses sollten Sie auf der Kommandozeile ihres Systems die Kommandosghc --versionund ghciausführen können ohne eine Fehlermeldung zu erhalten.
2. Erstellen Sie ein Verzeichnis, in dem Sie die übungsrelevanten Dateien ablegen.
3. Erstellen Sie mit einem Editor Ihrer Wahl eine DateiAufgabe00.hsim erzeugten Verzeichnis.
4. Fügen Sie folgenden Code (aus der Vorlesung) ein:
fac :: I n t → I n t
fac n= i f n≤0 then 1 else n ∗ fac (n− 1) Fügen Sie später ggf. weitere Definitionen hinzu.
5. Starten Sie eine Kommandozeile/Terminal/Konsole (cmd.exeunter Windows,basho.ä. unter Linux), und wech- seln Sie ggf. in das erzeugte Verzeichnis.
6. Starten Sie den Haskell-Interpreterghci.
7. Laden Sie Ihre TestdateiAufgabe00.hsin den Interpreter::load Aufgabe00bzw. kürzer:l Aufgabe00.
8. Der Interpreter erlaubt Ihnen, die in der geladenen Datei definierten Funktionen und Variablen auszuwerten. Geben Sie hierzu entsprechende Haskell-Ausdrücke auf der Kommandozeile des Interpreters ein. Beispiele:
17 +4 100 / 7 sqrt 100−1
(−1) ∗ (−1) fac 10 fac (−3)
fac " k o l i b r i " fac 9−20 foo 10
Beachten Sie auch die hilfreichen (teilweise noch unverständlichen) Fehlermeldungen bei fehlerhaften Ausdrücken.
9. Hilfe bekommen Sie durch Eingabe von:help. Die meisten Optionen sind anfangs noch nicht relevant; als hilfreich werden sich aber die Kommandos:reload(Abk.::r),:type(:t) und:browseerweisen.
Ein üblicher Entwicklungszyklus sieht dann so aus: editieren und speichern im Editor, (neu) laden im Interpreter (:lbzw.:r), Fehlermeldungen analysieren bzw. Testeingaben machen, zurück zum Editor.
10. Nachdem Sie sich mit ghci vertraut gemacht haben können Sie optional die oben gestellten aufgaben auch in IHaskel (https://github.com/gibiansky/IHaskell), einem Haskell Kernel für Jupyter (https://jupyter.
org/) Notebooks ausprobieren. Da sich die Installation dieser Software unter Umständen etwas schwieriger gestal- tet, finden Sie unterhttps://mybinder.org/v2/gh/gibiansky/IHaskell/masterauch eine Onlineversion.
— Seite 1 von 2 —
1. Übungsblatt
Funktionale Programmierung - Fortgeschrittene Konzepte und Anwendungen WS 2019/20 , So gewappnet können Sie jetzt die folgende Aufgabe angehen (am besten gemeinsam im Tutorium):
1.1 Summ, summ, summ.
1. Implementieren Sie eine Funktionsumme, welcherekursivdie Summe aller Zahlen von 1 bisnberechnet:
summe(n) =
n i=1
∑
i
Welche Signatur muss diese Funktion haben?
2. Speichern Sie Ihre Definition in der DateiAufgabe01.hs(oder einem beliebigen anderen Namen) und laden Sie die Datei.
3. Überlegen Sie sich Testfälle (Testwerte) für Ihre Implementation, und führen Sie diese aus, indem Sie die Auswer- tung auf der Kommandozeile wie in denErsten Schrittenbeschrieben nutzen.
— Seite 2 von 2 —