Vincent Balat

Programmation fonctionnelle — L3 info, M1 Linguistique Info, L2 Math info

Introduction à la programmation fonctionnelle et au langage Objective Caml.

Modalités de contrôle des connaissances

  • 1re session: 1/3 contrôle continu + 2/3 examen
  • 2e session: Max(examen, 1/3 contrôle continu + 2/3 examen)

Cours

1. 22 septembre 2009 - Chapitre 1 : Premiers pas

Définition de valeurs, laison globale et locale, fonctions, curryfication, polymorphisme. Exemples du premier cours

2. 29 septembre 2009 - Chapitre 1, suite : Effets de bord, séquencement et type unit, fonctions récursives + Chapitre 2 : enregistrements listes et types sommes

Types produits, types sommes, filtrage, motifs, listes et arbres.

3. 6 octobre 2009 - Chapitre 2, suite : enregistrements, listes et filtrage

Exemples du chapitre 2

4. 13 octobre 2009 - Chapitre 2, suite : Types sommes

4. 20 octobre 2008 - Chapitre 2, fin - Chapitre 3 : Exceptions

Exemples du chapitre 3

5. 27 octobre 2009 - Chapitre 3, fin

6. 3 novembre 2009 - Chapitre 4 : Traits impératifs d'OCaml

Exemples du chapitre 4

7. 10 novembre 2009 - Chapitre 4, suite

8. 17 novembre 2009 - Chapitre 5 : Compilation séparée, modules, foncteurs

Poly du cours

9. 21 novembre 2009 - Chapitre 6 : Structures de données et algorithmes

Retour sur les listes et les arbres, itérateurs, tris, piles, files, graphes, tables d'association. Exemples du chapitre 6

10. 1er décembre 2009 - Chapitre 6 : suite

11. 8 décembre 2009 - Chapitre 7 : Extensions du langage

Labels et variants polymorphes. Chapitre 7

12. 15 décembre 2009 - Chapitre 8 : Objets

Chapitre 8

TP

La page des TP est ici.

Projet

Soutenances de projet le mardi 12 janvier Inscrivez-vous à l'horaire de votre choix au secrétariat de l'UFR d'informatique à partir de mardi 5.

Le projet est à rendre ici avant le 11 à 23h59. Vous devez d'abord vous « inscrire » au cours Programmation fonctionnelle.

Comme beaucoup d'entre vous l'ont remarqué, l'algorithme de création du labyrinthe est très naïf et peu efficace. Évidemment vous pouvez proposer toute amélioration (dans la partie libre) et faire des test de performances.

Qqs petites erreurs d'énoncé : la fonction color_cell n'a pas besoin du paramètre laby alors quie la fonction solve oui...

Le contrôle continu est un projet à faire en groupe de 2 (maximum non négociable).

Le sujet est ici.

Examen

Voici l'énoncé de l'examen de janvier 2009, avec une correction partielle.

Bibliographie et liens

  • Xavier Leroy et al. The Objective Caml system : documentation and user's manual
    manuel en ligne (à toujours avoir sous la main)
  • Page de OCaml à l'INRIA
  • Emmanuel Chailloux, Pascal Manoury et Bruno Pagano. Développement d'Applications avec Objective Caml. O'Reilly, 2000
    disponible en ligne
  • Guy Cousineau et Michel Mauny. Approche fonctionnelle de la programmation. Dunod, 1995
    (cf lien1 et lien2).
  • Pierre Weis et Xavier Leroy. Le langage Caml Dunod, 1999.
  • Catherine Dubois et Valérie Ménissier-Morain. Apprentissage de la programmation avec OCaml. Hermès, 2004
    (cf lien).
  • Louis Gacogne. Programmation par l'exemple en Caml. Ellipse, 2004
    (cf lien).
  • Philippe Narbel. Programmation fonctionnelle, générique et objet : Une introduction avec le langage OCaml. Vuibert, 2005
    (cf lien).