Programmation Fonctionnelle : Scheme Partie 1, Fondamentaux

publicité
Programmation Fonctionnelle : Scheme
Jean-Paul Roy, Janvier-Avril 2006
Partie 1, Fondamentaux
1. Primitives (entiers, rationnels, réels, complexes, objets)
2. Fonctions : define et lambda
3. Conditions : if, cond et connecteurs logiques
4. Variables locales : let et let*
5. Itératif et récursif
6. Obtenir la trace d’une fonction
7. Un aperçu du style CPS
8. Listes : constructeur, accesseur, reconnaisseur
9. Listes : représentation
10. Récurrence sur les listes
11. Corrections d’exercices en Scheme
(inverser une liste, exponentiation modulaire, primalité, formes spéciales)
44
45
45
46
47
49
49
50
51
51
53
Partie 11, Intermediaire : Les Listes
1. Primitives (listes, A-listes, filtrage, complexes, citations)
2. Fonctions, ordre normal et ordre applicatif
3. Procédures d’ordre supérieur
4. Quelques fonctions sur les listes (map, filtrage, tri-fusion, exercices)
5. Les A-listes et le filtrage avancé
6. Exercices (filtrage, algorithme sur les ensembles)
7. Pour la culture : questions de cours (Algorithme de Wang, Peano, Eliza)
56
57
57
58
61
62
64
Partie 111, Intermediaire : Les Arbres
1. Définir des arbres binaires d’expression
2. Algorithme élémentaire sur les arbres (hauteur, nombre de nœuds, arboriser)
3. Evaluation d’un arbre binaire d’expression
4. Principes d’un simplificateur formel
5. La dérivation symbolique
6. Une introduction à la compilation des arbres
7. La curryfication
8. Quelques développements
66
66
68
68
69
70
74
74
Partie 1V, Intermediaire : Dessin
1. Le principe (commandes de la tortue, graphisme polaire et cartésien)
2. Entrainement à l’utilisation des nouvelles formes spéciales (do, begin…)
3. Graphisme de base (rosace et spirale, degradés)
4. Traceur de courbes paramétriques
5. Intégration d’un élément d’arc le long d’une courbe
6. Une introduction aux fractales
7. Arbres fractals
Philippe Giabbanelli
75
76
76
77
78
78
80
Partie V, Avance
1. Primitives indispensables (style impératif, tableaux, entrée/sortie et ports)
2. Fonctions d’arité variable
3. Programmation impérative
4. Valeur d’une λ-expression et fermeture
5. Construction de générateurs
6. Les mémo-fonctions, vers une programmation dans le style objet
7. Tableaux ou vecteurs, algorithme du drapeau hollandais (tri à 3 valeurs)
8. Définir des fonctions locales récursives par letrec
9. Modification impérative des pointeurs
10. Structures circulaires
11. Les entrées-sorties
12. Lecture et écriture dans un fichier disque
13. Utiliser le système d’exploitation (OS)
14. Aller chercher des informations automatiquement sur Internet
81
82
84
85
85
87
89
90
91
93
95
96
98
98
Partie VI, Specialise : Les Macros
1. Le principe (syntaxe, sémantique, quasiquote)
2. define-macro
3. Problèmes d’hygiène dans une substitution textuelle
4. Les macros R5RS : define-syntax
102
103
105
106
« Je ne vous cacherai pas que l'ensemble est *très* décevant.
Soit les notes du partiel étaient trop fortes et cela a contribué à
démotiver certains pour Scheme (ok l'an prochain le partiel
sera un peu plus serré), soit les notes du semestre 1 l'ont fait à
la place du partiel, à vous de décider. Il reste que 25 étudiants
environ sont au niveau en ce qui me concerne, et c'est peu pour
le travail bien plus approfondi qui sera fait en L3 ! »
« Comment devenir informaticien si l'on n'est même pas
capable de vérifier les types des objets qu'on manipule ??? »
« Et s'il y a 10000000 solutions et
qu'on s'intéresse seulement à la
3ème ? Mais ceci ne perturbe pas
certains, qui veulent quand même
devenir informaticiens et gérer
les ordinateurs de la Défense
Nationale. Tous aux abris ! »
Philippe Giabbanelli
Téléchargement