BuK-Übung09 G1
Inhaltsverzeichnis |
\beta-Konversion
Aufgabenstellung
Reduzieren Sie den \lambda-Ausdruck (\lambda x. x x)((\lambda z. z y) x) durch mehrfache Anwendung der \beta-Regel. Verfolgen Sie alle möglichen Anwendungsstellen (sog. \beta-Redexe).
Lösung
Es gibt zwei Möglichkeiten den gegebenen Ausdruck zu reduzieren.
- von innen heraus
- (\lambda x.xx)((\lambda z.zy)x) \stackrel{\beta}{\rightarrow} (\lambda x.xx)(xy) \stackrel{\beta}{\rightarrow} (xy)(xy)
- von außen beginnend
- (\lambda x.xx)((\lambda z.zy)x) \stackrel{\beta}{\rightarrow} ((\lambda z.zy)x)((\lambda z.zy)x) \stackrel{\beta}{\rightarrow} (xy)(xy)
Scheme
Aufgabenstellung
Evaluieren Sie den folgenden Scheme-Ausdruck durch Handrechnung.
((lambda (x) (* x (+ 2 x)))((lambda (x)(* x x)) 3))Überprüfen Sie das Ergebnis anschließend am Rechner.
Lösung
((\lambda (x) (*\text{ }x\text{ }(+\text{ }2\text{ }x)))((\lambda (x) (*\text{ }x\text{ }x))3)) \rightarrow (\lambda (x) (*\text{ }x\text{ }(+\text{ }2\text{ }x)))(*\text{ }3\text{ }3)) \rightarrow (*\text{ }(*\text{ }3\text{ }3) (+\text{ }2\text{ }(*\text{ }3\text{ }3))) \rightarrow (*\text{ }9\text{ }(+\text{ }2\text{ }9)) \rightarrow 99Umbenennung ungebundener Variablen
Aufgabenstellung
Evaluieren Sie den folgenden Ausdruck: ((\lambda x. (\lambda y. (x y)))(y w)). Hinweis: Falsch wäre (\lambda y. ((y w) y)).
Lösung
Damit der gegebene Ausdruck weiter reduziert werden kann muss zuerst y in z umbenannt werden. Dies ist notwendig, da y sowohl als gebundene und als ungebundene Variable verwendet wird.
Das y in z umbenannt wird, ist zufällig gewählt. Es hätte auch jeder andere Buchstabe genommen werden können. Außnahmen sind in diesem Fall allerdings x,\text{}y,\text{}w, da sie bereits in dem Ausdruck verwendet werden.
- Umbenennen des Ausdrucks
- ((\lambda x.(\lambda y.(xy)))(yw)) \rightarrow ((\lambda x.(\lambda z.(xz)))(yw))
- Reduktion des Ausdrucks
- (\lambda z.((yw)z))
\alpha-Konversion
Aufgabenstellung
Kann die gebundene Variable x in (\lambda x. (+\text{ }x\text{ }3)) beliebig umbenannt werden? Geben Sie zwei Antworten: eine konkrete auf den Ausdruck bezogene und eine verallgemeinerte.
Lösung
- Ja, die Variable kann umbenannt werden, da nirgends eine gebundene Variable x existiert.
- Eine Lösung wäre: (\lambda y.(+\text{ }y\text{ }3)). Es kann auch jeder andere beliebige Buchstabe gewählt werden.
Curryfication
Aufgabenstellung
Curryfizieren Sie die Funktion f, mit f(x, y, z) = x + y + z, zweimal. Geben Sie die Lösung in mathematischer Notation an und schreiben Sie außerdem eine entsprechende Scheme-Prozedur.
Lösung
Aus der Funktion f: X \times Y \times Z \rightarrow \mathbb{N} muss durch die Curryfikation folgendes entstehen:
F: X \rightarrow (Y \rightarrow (Z \rightarrow \mathbb{N}))Ein entsprechender Aufruf würde folgendermaßen aussehen: F(x)(y)(z).
Nachfolgend ist ein Scheme-Beispiel zusehen. Die Funktion f ist die dreistellige Ausgangsfunktion und die Funktion f-curried die einstellige Funktion nach der Currifikation von f.