|
Aufgaben / Übungen
Blatt 6 (neu)
|
Aufgabe 1
Implementieren Sie den in der Vorlesung vorgestellten
LISP-Interpreter in einer Programmiersprache Ihrer Wahl. Lassen
Sie dabei optional jeden Aufruf von apply
bzw. eval
mit den aktuellen Arguemten ausgeben.
(Wenn Sie Lisp wählen, können Sie die Übersetzung aus
Blatt5/Auf.4 verwenden)
Aufgabe 2 (falls Lust :-)
Programmieren Sie einen Übersetzer, der M-Ausdrücke in
S-Ausdrücke umwandelt. Wo sind ernsthafte Probleme?
(Ersetzen Sie dabei das Symbol durch die Zeichenreihe lambda
)
Aufgabe 3 (nochmal neu)
-
Nach Rücksprache mit Prof. Lippe wird die Aufgabe
modifiziert. Offenbar entsprich Teil (1) alt nicht der
M-Syntax. Wir setzen die alte Aufgabe semantisch sinnvoll um.
-
Die Übersetzungsanweisung sind wörtlich zu nehmen,
d.h. FUNCTION wird wirklich nur bei funktionalem
Argument oder Ergebnis erzeugt.
Übersetzen Sie die folgenden M-Ausdrücke in S-Ausdrücke, und
lassen Sie diese mit den angegebenen Argumenten interpretieren
(lambda=
):
-
lambda[[x;y]; lambda[[f]; cons[lambda[[y];f[y]][A];cons[f[x];(x.y)]]]
[label[h; lambda[[x];
[atom[x]->lambda[[h];(h.B)][y];
T->lambda[[y]; cons[cons[h[C];h[D]];(x.y)]][E]]
]]]
angewand auf die Argumente (F.G);H
.
-
lambda[[f;x];f[x]][lambda[[x];cons[T;x]];F]
Dietmar Lammers
Last modified: Tue Jul 3 09:40:49 MET DST 2001