AP2 — Construire un petit interpréteur
Une calculatrice nous suffit-elle ? Cinq ateliers pour découvrir les arbres, les environnements, les fonctions, les fermetures et le contrôle. Nous alternons exemples, essais et reprises ensemble.
AP2, 9 h – 12 h 15
Comment suivre la séance
Chaque étape suit le même rythme : quelques slides de cours, un atelier dans Livebook, puis une reprise ensemble. Ouvrez le notebook au moment de la consigne « À vous », et recopiez vos propres modules d’une étape à la suivante. Juste avant chaque consigne, une slide rappelle les formes Elixir que le notebook utilise.
À vous de jouer dans Livebook
1. Une calculatrice, puis ses limites
Calculez au fil de la lecture, puis confrontez votre règle aux priorités et aux parenthèses. Gardez un contre-exemple à discuter.
Slides 5 à 11Elixir : defp, gardes when, with · poly, chap. 4 et 5.
2. Conserver le calcul dans un arbre
Reprenez votre code, construisez un AST et séparez lecture et évaluation. Faites apparaître les priorités dans la forme de l’arbre.
Slides 12 à 25Elixir : tuples imbriqués, case, une clause par nœud · poly, chap. 2, 4 et 5.
3. Des noms et des fonctions
Ajoutez un environnement, des paramètres et un appel. Que manque-t-il à une fonction dont le corps utilise un nom extérieur ?
Slides 27 à 35Elixir : liste de couples, récursion sur le reste, Enum.zip/2 · poly, chap. 3 à 5.
4. Une fonction garde son contexte
Distinguez l’environnement de définition de celui de l’appel. Construisez une fermeture, puis une fonction qui fabrique une autre fonction.
Slides 36 à 44Aucune forme Elixir nouvelle : seule la valeur produite change · poly, chap. 5, fermetures.
5. Choisir ce qui sera exécuté
Ajoutez les booléens et case. Une branche contient une division par zéro : dans quelles conditions le programme réussit-il ?
Slides 45 à 53Elixir : case, assert_in_delta · poly, chap. 2 et 5.
Rendu
Cycle 1 · AP1–AP3 — dimanche 6 décembre 2026 à 23 h 59
Gardez vos étapes dans AP2/. Je préciserai en cours les notebooks à terminer, les cellules attendues et le point d’arrêt, selon notre avancement. Un seul rendu réunit AP1–AP3 ; nous en reparlerons à l’oral en AP4. Les prolongements non demandés restent facultatifs.
Laboratoires et défis facultatifs
Ces exercices sont facultatifs. Gardez vos essais dans entrainement/ ; pour un bonus, joignez les notebooks choisis au rendu annoncé en cours. Vous pouvez reprendre une notion ou explorer un point plus avancé.
Pour reprendre une notion
Laboratoire facultatif — Un lexer d’entiers
Une version réduite pour reprendre les préfixes et l’accumulateur. Elle utilise des entiers et ne fait pas partie du langage d’AP2.
Laboratoire facultatif — Vérifier des parenthèses
Comptez les ouvertures encore en attente de fermeture et refusez les chaînes invalides.
Pour aller plus loin
6. Des arbres aux graphes de dépendances
Facultatif : parcourir des dépendances, éviter les visites répétées, détecter un cycle et proposer un ordre de calcul.
Les défis de la séance
Des exercices plus durs, énoncés secs, zéro solution. Pour ceux qui ont fini le livebook et en veulent encore.
niveau secret B1 — Motus
Devinez le mot, lettre par lettre : un jeu de pattern matching pur, où toute la logique tient dans la comparaison de deux listes de caractères.
Une ressource facultative pour reprendre ou prolonger une idée du cours.
Run in LivebookTélécharger le .livemd
Ce sujet n'est pas un devoir supplémentaire. S'il est retenu comme bonus pour un cycle, je préciserai les exercices concernés, le dossier de votre dépôtap-homework où les déposer et l’échéance. Son absence ne retire aucun point.
Un bout de syntaxe oublié ?
Le poly reprend le langage aux chapitres 1 à 4, avec ses exemples et leurs résultats. Pour cette séance, relisez le chapitre 5.
