Formations en Informatique de Lille
Portail pédagogique
Vous êtes ici : FIL > Portail > Licence Info > L3S5 Miage > PF

Programmation fonctionnelle

BCC 4 : Mise en œuvre de langages de programmation

Description

Cette UE est une introduction à la programmation fonctionnelle.

L’objectif est ainsi d’appréhender comment concevoir des programmes suivant ce paradigme centré sur l’évaluation de fonctions, et de voir comment cette approche aide à écrire des programmes clairs, concis, corrects et élégants.

Équipe pédagogique

Licence Informatique :

  1. Marie-Emilie Voge
  2. Jean-Christophe Routier
  3. Nina Santi
  4. François Lemaire
  5. Pierre Tirilly
  6. Léopold Weinberg
  7. Samuel Hym

Licence MIAGE :

  1. Sylvain Salvati
  2. Pierre Allégraud

Crédits

6 ECTS

Samuel Hym
dernière modification : 8 septembre 2021

Attention : le semainier suivant est prévisionnel, il est susceptible d’évoluer.

Les rendus de TP auront lieu via le serveur gitlab-etu. Allez lire ce tutoriel pour la marche à suivre pour vos rendus de TP.

Il n’y a que 8 cours sur le semestre, « - » marque une semaine sans le créneau de cours dans le tableau suivant.

semaines Cours TD TP
06/09–10/09 Introduction. Typage.
13/09–17/09 Définitions de fonction § 1 Premier contact
20/09–24/09 Ordre supérieur § 1 Deuxième contact
27/09–01/10 Déclarations de type § 2 Le L-système et la Tortue
04/10–08/10 Analyse syntaxique § 2 Le L-système et la Tortue, bis
11/10–15/10 IO § 3 Des arbres et des couleurs
18/10–22/10 - § 3 Des arbres et des couleurs, bis
25/10–29/10 - § 3 et 4 Des arbres et des couleurs, ter
08/11–12/11 - § 3, 4 et 5 Des arbres et des couleurs, quater
15/11–19/11 Divers § 5 et 6 Interprétation
22/11–26/11 - § 5 et 6 Interprétation, bis
29/11–03/12 - § 7 etc. Interprétation, ter
06/12–10/12 - § 7 etc. Interprétation, quater
Samuel Hym
dernière modification : 9 novembre 2021

Installation d’Haskell sur votre machine personnelle

La solution la plus simple dans le cadre du cours est sans doute d’installer un environnement le plus proche possible de celui utilisé au M5, à savoir la distribution Linux Ubuntu (vous pouvez l’installer dans une machine virtuelle). Le compilateur GHC et les bibliothèques que nous allons utiliser sont disponibles dans la distribution.

Distributions Linux Debian & Ubuntu

Debian et Ubuntu (et autres distributions dérivées, sans doute) fournissent les paquets :

  • haskell-platform et haskell-platform-doc qui permettent d’installer tous les outils et bibliothèques de base,
  • libghc-gloss-dev et libghc-gloss-doc pour la bibliothèque Gloss que nous allons utiliser pendant quelques séances de TPs,
  • beaucoup d’autres outils, tels que hlint, stylish-haskell, etc. qui aident au développement du code.

Méthodes proposées par la communauté

Le site web de la communauté propose des instructions d’installation.

Configuration d’éditeur

Atom

Les paquets suivants peuvent vous aider :

  • language-haskell
  • ide-haskell
  • ide-haskell-repl
Samuel Hym
dernière modification : 3 octobre 2021

Exemples de code vus en cours

Les morceaux de code écrits pendant le cours sont disponibles dans un dépôt git que vous pouvez cloner en tapant :

git clone https://www.fil.univ-lille1.fr/~hym/d/pf.git

Cela crée un répertoire (pf par défaut) contenant un clone local du dépôt en ligne. Vous pourrez par la suite mettre à jour votre copie en lançant, dans le répertoire cloné :

git pull

Supports

Support pour les TDs du semestre.

Un mini-haddock (ou la version 2 pages par page) est un extrait de la documentation de la bibliothèque standard d’Haskell couvrant l’essentiel des fonctions que nous utilisons dans le cadre du cours.

Références

Les présentations de Simon Peyton Jones sont tout à fait recommandables :

Pour aller plus loin

Un cours est trop court pour faire le tour d’un sujet aussi vaste que la programmation fonctionnelle, ou même juste du langage Haskell.

La communauté Haskell est très active, avec de nombreux sites (blogs, etc.). Quelques liens pour entrer :

  • Hackage : l’archive de bibliothèques créées par la communauté,
  • le wiki de haskell.org, qui contient notamment un petit répertoire de bibliothèques, pour s’y retrouver dans Hackage,
  • 24 Days of Hackage 2012 et 2013,
  • What I Wish I Knew When Learning Haskell : une mine d’informations très diverses, allant d’exemples d’utilisation d’outils comme stack à un panorama de bibliothèques existantes,
  • The Haskell Cast : un balado qui, outre les entretiens, propose de nombreux liens,
  • Haskell from Scratch : une série de vidéos dans lesquelles Chris Forno montre comment écrire un programme complet,
  • Planet Haskell,
  • la conférence ICFP et ses affiliées, qui traitent de langages fonctionnels, à la fois sur les aspects recherche mais aussi usages ; voir les vidéos des exposés, pour un panorama.

Annales

Samuel Hym
dernière modification : 5 octobre 2021

Évaluation

L'évaluation s'effectue suivant une procédure de contrôle continu.

Trois notes seront attribuées à chaque étudiant durant le semestre :

  • TP1 : une note de contrôle continu évaluant les premiers travaux pratiques effectués et une démonstration de la compréhension de ces travaux,
  • TP2 : une note de contrôle continu évaluant les travaux pratiques effectués sur l’interprétation et une démonstration de la compréhension de ces travaux,
  • TD : une note correspondant à quelques interrogations écrites en TD.

La note finale est calculée de la façon suivante :

0,45 × TP1 + 0,3 × TP2 + 0,25 × TD

Si cette note ne permet pas de valider l’UE, elle pourra être remplacée par la formule :

min(10 ; 0,3 × TP1 + 0,35 × TP2 + 0,35 × TD)

Samuel Hym
dernière modification : 3 septembre 2021