Programmation Fonctionnelle en L1 (Printemps 2012)

Voir Programmation fonctionnelle

The spirit of Lisp hacking can be expressed in two sentences :
Programming should be fun.
Programs should be beautiful.
[Paul Graham]

Le langage utilisé dans ce cours est Scheme [avec le logiciel gratuit Racket]. Il fonctionne à l'identique sous Linux, MacOS-X et Windows. Pour installer chez soi la dernière version, consulter la rubrique Install Scheme (qui contient une vidéo illustrant l'installation et les réglages) ainsi que le document teackpack.pdf pour les réglages. La distribution contient une volumineuse doc en anglais, mais comme avec Java, nous n'en étudierons qu'une très petite portion, grosso modo les chapitres 1, 2, 3, 4, 5, 6, 8, 9, et 10.2 de mon livre PCPS paru en 2010 :

Un cours en amphi de 1h30 le lundi + deux séances sur ordinateur de 1h30 chaque semaine, durant 12 semaines. Voici un document sur l'usage d'un Mac au cas où vous travailleriez en salles 312-313......

Racket 5.2.1 vient de sortir ! Installez-le sur vos machines personnelles.


• Le livre de cours PCPS existe pour que vous puissiez aller plus vite et efficacement dans votre apprentissage du langage Scheme et de la programmation en général. Tous ses exercices sont corrigés sur ma page Web.
• Attention. Dans ce cours, nous n'utilisons pas le vrai langage Scheme, mais un sous-ensemble du langage simplifié Etudiant Avancé destiné à l'enseignement. Un langage de programmation complet demande un long apprentissage.
• Lors des contrôles flash, de 20 minutes à la fin d'un TP, aucun document n'est autorisé.
• Il y aura un partiel en amphi pendant la semaine du 19 mars. Seul le polycopié du cours sera autorisé, sans notes manuscrites.
• Ah oui, encore une petite chose. Ce cours s'adresse à des grands débutants. Je ne m'appuierai pas sur le langage Java, dont il est très déconnecté. L'état d'esprit sera différent, plus proche de la pensée mathématique pure (hors de question d'écrire x=x+1, aucune fonction à résultat void, raisonnements par récurrence, etc). Certains prétendent qu'il s'agit seulement d'une algèbre appliquée...


 1. Les Expressions Préfixées
 2. Programmer avec des Fonctions
 3. Programmer des images
 4. Animer le Monde
 5. La Programmation par Récurrence
 6. Données Composées : les Structures
 7. Données Composées : les Listes
 8. Récurrence et Calculs Itératifs
 9. Faire abstraction : l'Ordre Supérieur
 10. Données Composées : les Arbres
 11. Compléments sur les Arbres. Calcul Formel
 12. Révisions

Une option Programmation Fonctionnelle 2 [PF2, alias PSA = Programmation Scheme Avancée] sera ouverte au semestre suivant. Elle est destinée aux futurs programmeurs, aux futurs ingénieurs, et à tous les scientifiques souhaitant ajouter une coloration informatique à leurs études. Ceci concerne par exemple l'option D (Informatique) à l'agrégation de Maths, puisque cette discipline devient une spécialité de Terminale S à partir de la rentrée 2012 ! L'option PF2 abordera [en vrai Scheme] la programmation impérative, les macros, les classes d'objets à la Java, les interfaces graphiques, la programmation du Web, et bien d'autres choses plaisantes, intellectuelles et agréables...

Les langages de programmation ne devraient pas être conçus en empilant des tonnes de choses, mais en supprimant les faiblesses et les restrictions qui rendent toutes ces choses indispensables. Scheme démontre qu'un très petit nombre de règles pour former les expressions, sans aucune restriction sur la manière dont elles sont composées, suffit à former un langage de programmation pratique et efficace, qui soit suffisamment flexible pour accepter la plupart des paradigmes majeurs de programmation utilisés de nos jours. [R6RS]