HTWK Leipzig, Fakult¨at IMN
Prof. Dr. Sibylle Schwarz sibylle.schwarz@htwk-leipzig.de
8. Praktikum zur Vorlesung
”Deklarative Programmierung“
Sommersemester 2015 gestellt am 11. Juni 2015
Aufgabe 8.1 (λ-Ausdr¨ucke)
Geben Sie f¨ur jede der folgenden Zeichenketten an, ob sie korrekt geformteλ-Ausdr¨ucke sind.
Falls ja, stellen Sie den Ausdruck als Baum dar und geben Sie die Mengen der frei und der gebunden vorkommenden Variablen vor.
a. λx.λy.x
b. λx.λy.λz.xz(yz)
c. (λx.λy.λz.xz(yz))(λx.λy.x)(λx.λy.x)c d. (λxyz.x(yz))y(λx.xx)(λa.b)
e. (λxy.x(λxy.x)y)(λxy.x) f. λxy.x(x(xy)))
Aufgabe 8.2 (λ-Ausdr¨ucke)
Reduzieren Sie die folgenden λ-Terme bis zu ihrer Normalform.
a. (λx.x(λxy.y)(λxy.x))(λxy.y) b. (λxy.xy(λxy.y))(λxy.x)(λxy.y)
c. (λxyz.x(yz))y(λx.xx)(λa.b) d. (λxyz.xz(yz))(λxy.x)(λxy.x)c
Aufgabe 8.3 (Funktionen h¨oherer Ordnung)
Bestimmen Sie durch schrittweise Ableitung (ohne Computer) die folgenden Werte mit Hilfe der in der Vorlesung definierten Funktionen und succ = \x -> x + 1:
a. twice succ 0
b. twice twice succ 0
c. twice twice twice succ 0
d. twice twice twice twice succ 0
e. ( double . (twice ( \ x -> 3 * x ) ) ) 2
Uberlegen Sie sich zun¨¨ achst f¨ur jeden Teilausdruck seinen Typ.
Ubungsaufgaben, Folien und weitere Hinweise zur Vorlesung finden Sie online unter¨ www.imn.htwk-leipzig.de/~schwarz/lehre/ss15/dp.