Denis Lorrain


denislorrain.org:  Home Page > LISP Course

Programming in LISP (Common LISP): Course


Description

    This Course is taught in English and German at the Hochschule für Musik (University of Music) of Karlsruhe (Baden-Württemberg, Germany), mostly to Computer Music students. It introduces fundamental programming techniques in LISP (Common LISP, [Steele 1990]) and demonstrates interesting applications, from basic symbolic computation and manipulations to more sophisticated fields such as pattern matching and neural networks.
    The files available below are not independent tutorials. They are used as collected examples during the Course, surrounded by verbal introductions and comments, complementary informations, graphs, pictures, etc. Their musical and/or sound implications are thus not necessarily explicitly stated. They are however amply commented (in French, German and English) and can be of interest, independently from the Course, for a person already somewhat familiar with LISP.

Table of Contents (Table des matières)

Ière PARTIE : Techniques de base

0 - Bibliographie
1 - Généralités
2 - Définitions de base, formes LISP
3 - Mise en oeuvre pratique (Prologue : rudiments)
4 - Évaluation / citation : primitives quote, eval
5 - (Dé)construction de listes : primitives car, cdr, cons
6 - Structure de listes et représentation interne : arbres, doublets, paires pointées
7 - Premiers aperçus des lambda-listes, autres primitives de (dé)construction, comparaison et modification de listes
7.1 - Déconstruction : list-length, length, last, butlast, nth
7.2 - Construction : list, append, copy-list
7.3 - Prédicats d'identité : eq, eql, equal
7.4 - Modification : reverse, subst, substitute, remove
8 - Création de fonctions : primitive defun et lambda-listes, aperçu des macro-fonctions, primitives trace et untrace
3bis - Mise en oeuvre pratique (Epilogue : autres possibilités du top-level et primitives de sortie simples, print, etc.)
9 - Logique, conditions, contrôle
9.1 - Quelques autres prédicats
9.2 - Quelques opérateurs logiques
9.3 - Primitives if, when, cond
10 - Primitives arithmétiques et mathématiques
11 - De la récursivité, par l'exemple
11.1 - Quelques cas mathématiques simples
11.2 - Analyse et manipulation de listes, dont certaines primitives LISP elles-mêmes
11.3 - Autres exemples
12 - Création dynamique de variables et de fonctions récursives temporaires : primitives let et labels, etc.
13 - Itérations explicites et quelques structures de contrôle : primitives mapcar, apply, prog1, prog2, progn, do, dotimes, dolist, prog, catch et throw, lambda-expressions, notion de values
14 - Entrées/sorties, fichiers, interaction avec le système d'exploitation : notions de input/ouput-stream, primitives with-open-file, read, format, excl:run-shell-command (UNIX), notions de path, package, module, compilation, etc.

IIème PARTIE : Techniques avancées


15 - Modifications physiques de listes : primitives setf, rplaca, rplacd, nsubstitute, delete, nconc, pop, push, listes circulaires
16 - Structures de données pré-définies et leurs primitives
16.1 - Gros plan sur un symbole
16.1.1 - C-val : primitives de création, d'accès et de modification
16.1.2 - P-listes : primitives symbol-plist, get, remprop, etc. ; esquisses d'applications, mémo-fonctions
16.2 - A-listes : primitives acons, pairlis, assoc, rassoc ; fonction rplacval ; esquisse d'application (tables de hachage)
16.3 - Tableaux et vecteurs, notion de séquences : primitives associées
16.4 - Structures : exemple d'application
17 - Des macros, par l'exemple
17.1 - Macro-fonctions : primitives defmacro, macroexpand, technique d'anti-quote
17.2 - Création de macro-caractères, macro-caractères primitifs, la Read-Table, esquisses d'applications : primitive set-macro-character
18 - Du filtrage, ou Pattern-Matching : reconnaissance de formes
18.1 - Filtrage simple
18.2 - Filtrage élaboré : cf. Annexe C
19 - Programmation objet en Common Lisp Object System (CLOS)
19.1 - Principes, méthodes génériques en CLOS, exemples simples : primitives defclass, defmethod, make-instance, etc.
19.2 - Exemple élaboré


Annexes

A - Introduction à OpenMusic (IRCAM)
B - Introduction à CLCE-IV (GRAME)
C - Filtrage élaboré, avec liaison d'éléments d'assertions à des variables de filtres, calcul de contraintes et d'éléments de filtres : suite du Chapitre 18.1
D - Réseaux neuronaux

Notes

Download

Bibliography

[Steele 1990]    Steele, Guy L. Jr., 1990: Common LISP: The Language, Second Edition, Bedford, Digital Press
[Weissman 1967]    Weissman, Clark, 1967: LISP 1.5 Primer, Belmont, Dickenson
[Wertz 1989]    Wertz, Harald, 1989: (Common) LISP : une introduction à la programmation, Paris, Masson (Manuels informatiques Masson)
[Winston & Horn 1981]   Winston, P. H. & Horn, B. K. P., 1981: LISP, Reading, Addison-Wesley

TOP of page

denislorrain.org Home Page


Creative Commons License All texts and text files available on this site are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.