In das Programm unter
https://www.coli.uni-saarland.de/~oe/lisp/fehler.lisp haben
sich 6 (in Worten sechs) dumme Fehler eingeschlichen; finde und
korrigiere sie so, daß das Programm entsprechend der
Kommentare in der Datei funktioniert.
Einfaches Mapping (5 Punkte)
a)
Definiere eine einstellige Funktion get-even(), die
als Argument eine Liste mit Ganzzahlen nimmt und durch eine
geeignete mapping-Operation (i.e. eine Kombination aus
mapping- und anonymer lambda()-Funktion) alle ungeraden
Zahlen n durch 2 * n ersetzt.
b)
Definiere eine einstellige Funktion eliminate-odds(), die
als Argument eine Liste mit Ganzzahlen nimmt und durch eine
geeignete mapping-Operation alle ungeraden Zahlen
unterdrückt, e.g.
Die Funktionen !() und ?() sollen jeweils iterativ
die Fakultät ihrer Eingabe berechnen; erkläre, warum
!() funktioniert, während ?() für alle
Eingaben 0 zurückgibt.
(defun ! (n)
(do ((m n (- m 1))
(k 1 (* k m)))
((= m 0) k)))
(defun ? (n)
(do* ((m n (- m 1))
(k 1 (* k m)))
((= m 0) k)))