Grundkurs Common-Lisp WS 96|97
2. Übung (6-nov-1997)
Variablenbindung und Auswertung (4 Punkte)
-
-
Was kann getan werden, damit die folgenden Ausdrücke jeweils zu 13
evaluieren?
- a)
- a
- b)
- (* a b)
- c)
- (length c)
- d)
- (length (nthcdr 2 (reverse c)))
Quotierung (4 Punkte)
-
-
Bestimme die Ergebnisse aus der Auswertung der folgenden Ausdrücke und erkläre sie.
- a)
-
(length "foo bar baz")
- b)
-
(length (quote "foo bar baz"))
- c)
-
(length (quote (quote "foo bar baz")))
- d)
-
(length '(quote "foo bar baz"))
Listenzugriff (8 Punkte)
-
-
Sei das Symbol *foo* gebunden an eine beliebig lange Liste
(e.g.
(a b c ... x y z)
).
- a)
- Formuliere einen Ausdruck, der auf das
vorletzte Element von *foo*
zugreift.
(Für weitere grundsätzlich
verschiedene Ausdrücke mit dem gleichen Effekt gibt es
jeweils zwei Extrapunkte.)
- b)
- Schreibe eine einstellige Funktion
vorletztes()
, die den
Listenzugriff aus Aufgabe a) für beliebige
Listen, die als Funktionsargument übergeben
werden, berechnet.
Hinweis: in der
Schreibe `foo()
' gehören die runden
Klammern nicht zum eigentlichen Funktionsnamen,
sondern zeigen an, daß das Symbol
`foo
' als Funktionsname verwendet wird.
Ein Prädikat (4 Punkte)
-
-
Schreibe ein einstelliges Prädikat palindromp(), das
sein Argument daraufhin überprüft, ob es eine Liste
ist, die von rechts und von links gelesen gleich ist.
Hinweis: in der Schreibe ` palindromp()' gehören
die Klammern nicht zum eigentlichen Namen, sondern zeigen an,
daß das Symbol ` palindromp' als Funktionsname
benutzt wird.
-
-
? (palindromp '(A b l e w a s I e r e I s a w E l b a))
t
Schmökaufgabe: set() (3 Schmökpunkte)
-
-
Gegeben folgende Aufrufe
-
- ? (set 'a 'b)
-
- ? (set 'b 'c)
-
- ? (set b a)
Spezifiziere und erkläre die Werte für a, b und
c.
Abgabetermin ist der 13-nov-1997