Programmation fonctionnelle
Ce cours initie à la programmation fonctionnelle en Scheme/Racket. Il part des concepts du paradigme et des bases du lambda-calcul, présente les constructions de base du langage, puis les symboles, liaisons et environnements. Suivent la récursivité, les listes, le système de type de Typed Racket et les fonctionnelles d'ordre supérieur, avant les formes impératives et les macro-expansions.
Notes de cours
Cours9 pages
- IntroductionConcepts de la programmation fonctionnelle (transparence référentielle, fonctions de première classe, typage dynamique), bases du lambda-calcul et lien avec la syntaxe Lisp.
- Types et constructions de base du langageConstructions syntaxiques de base de Scheme/Racket : opérations numériques, caractères et chaînes, expressions conditionnelles if, when et cond.
- Symboles, liaisons et environnementsSymboles et liaisons en Scheme, environnements global et locaux (let), portée lexicale et dynamique, portée et durée de vie des liaisons.
- RécursivitéRécursivité en Scheme : factorielle récursive, récursivité terminale avec accumulateur, fonction auxiliaire via letrec et notion de continuation.
- Les listesListes en Scheme/Racket : définition récursive, fonctions de base, append, remove, member et listes d'association (assoc, assq, assv).
- Système de typeTypage statique et dynamique, annotations de type en Typed Racket, définition de structures et reconnaissance de motifs avec match.
- Les fonctionnellesFonctions d'ordre supérieur en Scheme : lambda, bêta-réduction, map, andmap, ormap, foldl et foldr, apply, curryfication et fermetures.
- Les formes impérativesFormes impératives en Scheme/Racket : références, passage d'arguments, affectation avec set!, paires mutables et blocs begin.
- Les macro-expansionsÉvaluation et application en Scheme, évaluation paresseuse, macros par remplacement textuel (C) et par transformation de source (define-syntax-rule).
Ressources
Support de l'enseignant1 document
Sujets de TD8 documents
Corrigés des TD (Racket)8 documents