Aufgaben / Übungen

Blatt 6

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 Lambda durch die Zeichenreihe lambda)

Aufgabe 3 (alt)

Übersetzen Sie die folgenden M-Ausdrücke in S-Ausdrücke, und lassen Sie diese mit den angegebenen Argumenten interpretieren (lambda=Lambda):
  1. lambda[[x;y]; lambda[[f]; (lambda[[y]; f[y]][A].f[x].x.y)]
                  [label[h; lambda[[x]; 
                               [atom[x]->lambda[[h];(h.B)][y]
                                T->lambda[[y];(h[C].h[D].x.y)][E]]
                   ]]]]
              
    angewand auf die Argumentliste [(F.G);H].
  2. lambda[[f;x];f[x]][lambda[[x];cons[T;x]];F]

Aufgabe 3 (neu)

Übersetzen Sie die folgenden M-Ausdrücke in S-Ausdrücke, und lassen Sie diese mit den angegebenen Argumenten interpretieren (lambda=Lambda):
  1. lambda[[x;y]; lambda[[f]; lambda[[y]; f[y]] cons[[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.
  2. lambda[[f;x];f[x]][lambda[[x];cons[T;x]];F]

Dietmar Lammers
Last modified: Tue Jun 26 10:14:54 MET DST 2001