Commentaires généraux sur l'examen de programmation fonctionnelle. Il y a malheureusement peu de bonnes copies, notamment parce que les erreurs basiques sont nombreuses (pour les deux questions), notamment: - erreurs de syntaxe; - confusion entre cons, list et append; - commentaires qui ne sont pas des spécifications; - spécifications qui ne correspondent pas au code fourni. De telles erreurs sont assez normales chez les débutants mais, en fin d'année, elles sont la marque d'un entraînement insuffisant, d'un manque de travail. La première question demandait la programmation efficace des "nombres de Stirling s(n,k) de première espèce signés", au départ de leur définition par récurrence: https://fr.wikipedia.org/wiki/Nombre_de_Stirling#Formule_de_r%C3%A9currence La première question est classique, et relativement simple en ce sens qu'il n'existe qu'un moyen élémentaire de programmer efficacement les nombres demandés. Cependant, certains d'entre vous ont ignoré la consigne "Écrire une fonction efficace"; la version naïve, à elle seule, est sans intérêt pratique vu ses performances désastreuses. D'autres ont soumis une "version efficace" ... qui ne l'est pas du tout. Le fichier corr1.scm comporte une solution simple et raisonnablement efficace, ainsi qu'une variante tout aussi efficace produite par l'un de vous. A NE REGARDER QU'APRES AVOIR REFAIT L'EXERCICE SOI-MEME! La seconde question demandait la construction efficace, pour un naturel n donné, de la liste des triplets croissants de naturels dont la somme des cubes vaut n. Le seconde question est plus ouverte parce que plusieurs techniques permettent de la résoudre. Un point positif est la variété d'approches intéressantes présentes dans vos copies. Ici aussi, malheureusement, les consignes ne sont pas toujours respectées. Certains programmes fournis produisent un seul triplet ordonné, ou au contraire une liste qui contient aussi des triplet non ordonnés. Il y a aussi un problème de performances; en particulier, un programme qui génère des doublons en grand nombre, même si la fonction "remove-duplicates" permet de les enlever facilement, a peu de chances d'être raisonnablement efficace. Une solution est proposée dans le fichier corr2.scm A NE REGARDER QU'APRES AVOIR REFAIT L'EXERCICE SOI-MEME!