Formation programmation fonctionnelle

publicité
Formation programmation fonctionnelle
Yann « Yago » Hamdaoui - VIA - IRIF
6 avril 2016
1
La programmation fonctionnelle ?
1.1
Qu’est-ce que la programmation fonctionnelle ?
— Une classe de langages où les fonctions sont des « first class citizens » (higher order functions)
— Une classe de langages basés sur le λ-calcul
— Exemples de langages fonctionnels : Lisp, OCaml, Haskell
1.2
Qu’est ce qu’un calcul ?
— Calcul : des grandeurs et des opérations sur ces grandeurs
— Machine de Turing ; Modèle Turing-complet ; Notion de calculabilité
— Ensembles classiques de systèmes Turing-complets : la plupart des langages de programmation, les fonctions
récursives, jeux de la vie, Minecraft, configuration Sendmail. . .
— Architecture de Von Neumann
L’avènement du λ
1.3
—
—
—
—
2
Soit ν = {x, y, . . .} un ensemble de variables, on définit M, N := x|λx, M |M N
Notion d’application partielle
Notion de β-réduction
Le λ-calcul est Turing-complet.
Les systèmes de types
— « Well-typed programs do not go wrong. » Robin Milner
— Système de type simple
— Type, types algébriques (type-produit, type-somme)
3
ML
3.1
Un petit fix
— Récursivité, point fixe
— Polymorphisme : on remplace les types sur lesquels on n’a pas de contrainte par des α
— Types récursifs : listes, arbres. . .
3.2
Les systèmes de types
On a recours à l’inférence de types. Il existe plusieurs systèmes :
— Types simples : décidable mais pas de type principal
— ML : décidable et type principal
— OCaml : décidable mais plus de type principal
— System F : indécidable et pas de type principal
1
Téléchargement