Programmation Fonctionnelle et Symbolique en Lisp


Support de cours distribué pour un enseignement en Département Informatique d'IUT, d'une douzaine d'heures de cours environ.

Le cours a été ensuite remplacé par un cours de programmation fonctionnelle «pure» utilisant le langage Hope, qui a été supprimé un peu plus tard (probablement pour faire de la place à Visual Basic, retour aux vraies valeurs).

Ce document a été écrit avec ChiWriter entre 1986 et 1989, et sommairement converti en HTML en Février 2001.


Sommaire

1. Introduction Un peu d'histoire.
Programmation Impérative / Déclarative.
Intelligence Artificielle et Programmation Symbolique.
La famille Lisp.
 
2. Les expressions symboliques Les Atomes.
Les doublets.
Notation des Listes.
Représentation d'arbres par des listes.
Représentation des Programmes.
Résumé: les expressions symboliques sont formées d'atomes et de doublets, on peut s'en servir pour coder des structures de données telles les listes, les arbres, etc.
3. Evaluation des expressions symboliques La boucle «top-level».
Notion d'Environnement.
La Fonction «Quote».
Manipulation élémentaire des Listes.
Les Prédicats.
Structures de Contrôle fondamentales.
Typologie des fonctions.
Définition et Appel de Fonction (rappel).
Résumé: on voit ici quelques mécanismes de base de Lisp, en particulier le fonctionnement de l'évaluateur.
4. Techniques et méthodes Introduction.
Utilisation de la Récursivité (exemple des listes).
Utilisation de Fonctions Auxiliaires.
Arbres Binaires.
Un Exemple Pratique: Calcul Formel d'une Dérivée.
Variables Tampon.
Ici on explique comment proggrammer avec des fonctions : emploi de la récursivité, de fonctions auxiliaires, etc.
5. Fonctionnelles Motivation.
Les fonctions comme paramètres.
Exercices.
Conclusion.
On utilise des fonctions comme paramètres d'autres fonctions.
6. Sémantique Quelques généralités.
Notion d'Environnement
Sémantique de l'Affectation
Sémantique de la Composition Séquentielle
Sémantique de la Répétition
Conclusion

Ce chapitre est un «petit supplément» destiné à faire un lien entre programmation fonctionnelle et programmation impérative via la théorie.
7. Conclusion    
Annexe : Fonctions Lisp usuelles    

M. Billaud, Février 2001