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.