Programmation fonctionnelle, SIN6U9C

Figure
Version & licenses
Creative Commons License

Programmation Fonctionnelle, L3 Saint Charles

Guyslain Naves

Le cours.

TD

  • TD 1 : Variables et fonctions.
  • TD 2 : Types paramétrés I.
  • TD 3 : Types paramétrés II.
  • TD 4 : Listes.
  • TD 5 : Types algébriques I.
  • TD 6 : Types algébriques II.
  • TD 7 : Yojson, Dictionnaires.
  • TD 8 : Modules et foncteurs.
  • TD 9 : Boucles fonctionnelles.
  • TD 10 : Révisions.

TP

  • TP 1 : Prise en main de l'environnement.
  • TP 2 : Mise en orbite !
  • TP 3 : Fractale de Mandelbrot.
  • TP 4 : Script parcourant un système de fichiers.
  • TP 5 : Dessins d'arbres binaires.
  • TP 6 : Algorithme de Reingold-Tilford.
  • TP 7 : Utiliser des données d'OpenStreetMap.
  • TP 8 : Évaluation paresseuse et machines de Turing.
  • TP 9 : Le compte est bon.
  • TP 10 : Programmation fonctionnelle en Java.

Aides

Pour l'environnement de développement :

Pour coder en Ocaml :

Archive année 2016

TD

  • TD 1 : Découverte d'Ocaml.
  • TD 2 : Substitutions.
  • TD 3 : Listes.
  • TD 4 : On continue les listes, avec les versions fonctionnelles.
  • TD 5 : Types algébriques.
  • TD 6 : Modules, algorithmique.
  • TD 7 : Utilisation de la librairie standard.
  • TD 8 : Préparation du projet.

TP

  • TP 1 : Ensemble de Mandelbrot.
  • TP 2 : Problème des $n$ reines.
  • TP 3 : Timsort.
  • TP 4 : Une énigme mathématique.
  • TP 5 : L'algorithme de Reingold et Tilford
  • TP 6 : Le compte est bon.
  • TP 7 : Zippers et machines de Turing.

Projet

Le projet de cette année consiste à l'implémentation d'un algorithme, chaque groupe travaillant sur un algorithme différent. Chaque algorithme sera décrit dans une monade permettant de représenter les principales étapes du calcul et de produire une sortie sous la forme de dessins. On pourra ensuite utiliser une console (qui est fournie) pour contrôler l'exécution de l'algorithme avec un affichage du résultat dans une page html.

Voici un exemple avec un tas gauche.

La principale difficulté à laquelle s'attendre est de s'approprier les différentes librairies fournies (à récupérer sur Ametice) pour les utiliser correctement. Il s'agit finalement d'une des principales compétences pour un développeur : être capable d'utiliser des libraires externes. Par ailleurs, les interfaces des librairies fournies sont typiques de programmes fonctionnels, bien les manipuler est donc un bon exercice de programmation fonctionnelle.

Le projet et son infrastructure seront présentés pendant le cours 8.

Examen

Archive année 2015

TD

  • TD 1 : Découverte d'Ocaml.
  • TD 2 : Substitutions.
  • TD 3 : Manipulation de listes.
  • TD 4 : on continue le sujet sur les manipulations de listes.
  • TD 5 : Types algébriques.
  • TD 6 : Un peu d'algorithmique.
  • TD 7 : Utilisation de la librairie standard.

TP

  • TP 1 : Ensemble de Mandelbrot.
  • TP 2 : Problème des $n$-reines.
  • TP 3 : Énigme mathématique.
  • TP 4 : Des listes infinies !
  • TP 5 : suite des listes infinies, rubans et automates cellulaires.
  • TP 6 : Spirales.
  • TP 7 : Le compte est bon.

Projet 2015

Examen 2015

Archive année 2014

TD

  • TD 1 : Découverte d'Ocaml.
  • TD 2 : Substitution.
  • TD 3 : Manipulation de listes.
  • TD 4 : Types algébriques.
  • TD 5 : On rattrape le retard.
  • TD 6 : Modules et Foncteurs.
  • TD 7 : Librairie standard.
  • TD 8 : Encore une séance de rattrapage.

TP

  • TP 1 : Ensemble de Mandelbrot.
  • TP 2 : Problème des N-reines.
  • le TP 3 est annulé, il sera rattrapé plus tard.
  • TP 4 : Une énigme mathématique.
  • TP 5 : Listes infinies.
  • TP 6 : Fin du TP précédent, en particulier la partie sur les automates cellulaires.
  • TP 7 : Le compte est bon.
  • TP 8 : Combinateurs de parsing.

Projet

Projet : Interprèteur fonctionnel.

Examen

Archive année 2013

TD

  • TD 1 : Variables et $\beta$-réduction.
  • TD 2 : Fonctionnelles et typage.
  • TD 3 : Manipulation de listes.
  • TD 4 : Types paramêtrés et modules.

TP

  • TP 1 : Ensemble de Mandelbrot.
  • TP 2 : Petite énigme mathématique.
  • TP 3 : Compression LZW.
  • TP 4 : Le compte est bon.

Projet

Examen