• Keine Ergebnisse gefunden

HTWK Leipzig, Fakultät IM Prof. Dr. Sibylle Schwarz

N/A
N/A
Protected

Academic year: 2022

Aktie "HTWK Leipzig, Fakultät IM Prof. Dr. Sibylle Schwarz"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

HTWK Leipzig, Fakultät IM

Prof. Dr. Sibylle Schwarz sibylle.schwarz@htwk-leipzig.de

Arbeitpaket zu KW 19 zum Modul „Fortgeschrittene Programmierung“

Sommersemester 2020

In dieser Woche geht es um Rekursion, die in funktionalen Sprachen eine zentrale Rolle spielt.

Ergänzend zum Abschnitt im Buch lernen wir gleichzeitig die Deklaration rekursiver Daten- typen kennen. Deklarationen von Aufzählungstypen mitdata haben wir schon gesehen.

In dieser Woche kommt die Deklaration eines rekursiven Datentyps für Peano-Zahlen hinzu:

data Nat = Z | S Nat

In dieser Definition kommt der Typ Nat auf beiden Seiten vor, der Datentyp Nat ist also rekursiv. In rekursiven Datentypen gibt es jeweils Konstruktoren für

• Basiselemente (hierZ für das Basiselement 0) und

• die rekursiven Operationen (hierS für die Operation Nachfolger).

Darüber funktioniert das Pattern Matching in Funktionen auf solchen Datentypen, für jeden Konstruktor muss also ein Fall definiert werden, z.B.

double :: Nat -> Nat double x = case x of

Z -> Z

S x’ -> S ( S ( double x’ ) )

Auch hier erkennen wir das typische Muster der Rekursion, in der Definition vondouble ( S x’ ) kommt double x’vor.

Lesen und Verstehen

Kapitel 4 Rekursion als Entwurfstechnik

im Buch „Haskell-Intensivkurs - Ein kompakter Einstieg in die funktionale Programmierung“

Überprüfen Sie dabei wieder alle Beispiele mitghci.

Ergänzend konsultieren Sie bitte die Folien auf der Homepage zum Modul. Diese werden auch in den Übungsaufgaben verwendet.

Begriffe und Testfragen 1) Was ist lineare Rekursion?

2) Welche Arten von Rekursion gibt es außerdem? Wodurch unterschieden sich diese?

Übungsaufgaben

Für Serie 4 gibt es insgesamt 10 Aufgaben-Punkte, je einen für Musterlösungen zu

• Teilaufgaben 4.1.b und 4.1.c (aber nicht für 4.1.a, Lösung dazu steht im Buch)

• je einen für jede Teilaufgabe von 4.3.a und 4.3.b

Dabei können die „späteren“ Aufgaben die Aussagen aus den „früheren“ voraussetzen, al- so z.B. beim Beweis der Kommutativität der Addition deren Assoziativität voraussetzen (nicht jedoch beim Beweis der Assoziativität die Kommutativität).

Wieder sind die Aufgaben im Buch (Abschnitt 4.7) gut zum Selbsttest geeignet.

Autotool

Haskell-Programme mit Peano-Zahlen

Referenzen

ÄHNLICHE DOKUMENTE

Wenn der Bauer den Wolf gefüttert hat und in der Stadt Markt ist, geht er in die Stadt und lässt Wolf und Ziege alleina. Wenn der Wolf gefüttert ist, ist

Formulieren Sie diese Aussagen mit Hilfe eines zweistelligen Prädikatsymboles für „läuft schneller als“b. Geben Sie die Grundinstanziierung dieser

Dabei werden wir (im Unterschied zum Buch) zunächst wieder vorwiegend mit einer selbst- definierten Version arbeiten?. Deshalb gibt es auch eine kurze Einführung und

In Haskell geschieht das bedarfsgesteuert (lazy), Teilausdrücke werden also erst dann ausge- wertet, wenn ihr Wert benötigt wird.. Das ermöglicht es auch, Daten (potentiell)

Definieren Sie durch eine zusätzliche Regel ein zweistelliges Prädikat „erreichbar“, welches die Erreichbarkeit (über einen oder mehrere aufeinanderfolgende Strecken-

Zur Automatisierung dieser Auswahl wird meist eine Bewertungsfunktion definiert, die jedem Zug (Knoten im Graphen des Spiels) einen Wert in einer geordneten Menge zuordnet.. In

Wir werden deshalb zusätzlich mit einigen übersichtlichen Zwei-Personen-Spielen arbeiten, die sich besser für kleine praktische Beispiele zur Anwendung der Minimax-Suche eignen:

In Abschnitt 7.1 werden Grundlagen der Wahrscheinlichkeitsrechnung, die Sie schon aus den entsprechenden Mathematik-Modulen kennen, anhand vieler Beispiele wiederholt.. In Abschnitt