
×
Inhaltsverzeichnis
- 1 Einleitung.
- 1.1 Warum LISP?.
- 1.2 Zur Entwicklungsgeschichte von LISP.
- 1.3 Was sind die Grundbausteine der Programmierung?.
- 1.4 Grundbausteine der Programmierung in LISP.
- 1.5 Der Inhalt dieses Lehrbuches.
- 1.6 Literaturhinweise.
- 1.7 Übungen.
- 2 Einfache Terme und der Umgang mit Objekten.
- 2.1 Einfache Terme.
- 2.2 Bezugnahme auf Objekte.
- 2.3 Umgang mit Objekten.
- 2.4 Die externe Repräsentation von Objekten.
- 2.5 Übungen.
- 3 Primitive Datenobjekte — zugeordnete Grundfunktionen und externe Repräsentation.
- 3.1 Zahlen.
- 3.2 Zeichen.
- 3.3 Zeichenketten.
- 3.4 Symbole (Literal-Atome).
- 3.5 Funktionsobjekte.
- 3.6 Paare (Cons-Objekte).
- 3.7 Weitere Datenstrukturen in verschiedenen LISP-Dialekten.
- 3.8 Übungen.
- 4 Das LISP-System im einfachen Dialog.
- 4.1 Terme sind Listen.
- 4.2 Der Dialog mit dem System.
- 4.3 Die Umgebung verändert sich.
- 4.4 Verschachtelung von Termen.
- 4.5 Auswertung von Termen.
- 4.6 Quotierung — Beabsichtigte Suspendierung der Auswertung.
- 4.7 Die Wahrheitswerte T und NIL.
- 4.8 Übungen.
- 5 Funktionsdefinition als Abstraktion über Termen.
- 5.1 Was ist Abstraktion.
- 5.2 Funktionale Abstraktion in LISP.
- 5.3 Auswertung von Termen mit LAMBDA-Ausdrücken als Funktion.
- 5.4 Beziehungen zwischen Umgebungen — globale und lokale Effekte.
- 5.5 Bedingte Ausdrücke — Verwendung und Verknüpfung von Prädikaten.
- 5.6 Ein größeres Beispiel: Die Baukastenwelt („Blocks World“).
- 5.7 Literaturhinweise.
- 5.8 Übungen.
- 6 Komplexe Datenstrukturen und ihre Verarbeitung — Rekursion und Iteration.
- 6.1 Zusammensetzen (Kombinieren) von Daten zu komplexeren Strukturen.
- 6.2 Datenabstraktion.
- 6.3 Lineare Datenstrukturen und lineare Rekursion.
- 6.4 Hierarchische Datenstrukturen und Baum-Rekursion.
- 6.5 Arithmetische Ausdrücke als hierarchischeStrukturen — Anwendungsbeispiel: Vereinfachung.
- 6.6 Rekursive Funktionen zur Manipulation von S-Ausdrücken.
- 6.7 Literaturhinweise.
- 6.8 Übungen.
- 7 Kontrollstrukturen, Spezialformen und Macros.
- 7.1 Was sind Kontrollstrukturen?.
- 7.2 Wozu werden Spezialformen benötigt?.
- 7.3 Die verallgemeinerte Variablenliste.
- 7.4 Definition von Spezialformen: FEXPRs, FLAMBDAs und NLAMBDAs.
- 7.5 Definition von Spezialformen: Macros und MLAMBDAs.
- 7.6 Memo-Funktionen: Ein Beispiel für Macros.
- 7.7 Sind FEXPRs wirklich erforderlich?.
- 7.8 Literaturhinweise.
- 7.9 Übungen.
- 8 Ein- und Ausgabe.
- 8.1 Dateien als Objekte.
- 8.2 Spezifikation von Dateien.
- 8.3 Allgemeines über die Ein-/Ausgabe.
- 8.4 Eingabe.
- 8.5 Lexikalische Verarbeitung und syntaktische Klassifikation von Zeichen.
- 8.6 Read-Macros.
- 8.7 Ausgabe.
- 8.8 Ströme und die Simulation von Ein-/Ausgabe-Vorgängen durch Pseudo-Dateien.
- 8.9 Direktzugriff auf Dateien.
- 8.10 Literaturhinweise.
- 8.11 Übungen.
- 9 Funktionsobjekte.
- 9.1 Funktionale. Funktionen, die Funktionen als Argumente haben.
- 9.2 Probleme mit Funktionsobjekten.
- 9.3 Generatoren und Ströme.
- 9.4 Objekt-orientierte Programmierung und Prozeßsimulation.
- 9.5 Simulation durch Funktionsobjekte mit zugeordneter Umgebung.
- 9.6 Das Hafenmodell: Ein konkretes Simulationsbeispiel.
- 9.7 Literaturhinweise.
- 9.8 Übungen.
- 10 Generische Funktionen und datengesteuerte Programmierung.
- 10.1 Gründe für eine weitere Abstraktionsstufe.
- 10.2 Generische Funktionen.
- 10.3 Realisierung generischer Funktionen.
- 10.4 Flavors: Ein neues Konzept für generische Funktionen und Nachrichtenaustausch.
- 10.5 Grundstrukturen und generische Operationen in LISP-Systemen.
- 10.6 Aspekte der datengesteuerten Programmierung.
- 10.7 Literaturhinweise.
- 10.8 Übungen.
- 11 Regel-orientierteProgrammierung.
- 11.1 Programmierstile und Informationsverarbeitungsmodelle.
- 11.2 Grundbegriffe des Mustervergleichs.
- 11.3 Mustervergleich mit strukturierten Daten.
- 11.4 Unifikation.
- 11.5 Einfache Produktionensysteme.
- 11.6 Verallgemeinerte Produktionensysteme.
- 11.7 Literaturhinweise.
- 11.8 Übungen.
- 12 Verarbeitung von LISP in LISP.
- 12.1 Interpretation von LISP.
- 12.2 Realisierung von Umgebungen — Bindungsstrategien.
- 12.3 LISP-Interpreter für verschiedene Bindungsstrategien.
- 12.4 Prinzipien der Compilation von LISP.
- 12.5 Elemente der Assemblersprache in LISP und ihre Verwendung bei der Compilation.
- 12.6 Literaturhinweise.
- 12.7 Übungen.
- Anhänge.
- 13 Einige Bemerkungen über Programmiersysteme für LISP.
- 14 Funktionenverzeichnis.
- 15 Übersicht über die Abweichung der Funktionsdefinition in anderen LISP-Dialekten.
- 16 Literaturverzeichnis.
- 17 Namen- und Sachverzeichnis.