Programmation fonctionnelle
et Preuves
Etudiants:
Elkira Anass
Gupta Umang
Encadrant:
M. Thiry Laurent 2A IR
2013-14
Fonction d'ordre supérieur
(fonctions comme valeurs)
map :: (a -> b) -> [a] -> [b]
double x = x * 2
map double [1,2,3,4]
->[2,4,6,8]
Curryfication
(les fonctions en Haskell
prennent un seul argument)
add x y = x + y
a = add 5
a 4
-> 9
Fonction anonyme
(fonction sans nom)
(\x -> x + 1) 5
-> 6
map (\x- > x + 1 ) [1,2,3,4]
->[2,3,4,5]
C++
Haskell
Quick Sort
concis
paresseux
*It is also possible to write imperative programs in Haskell! Easy, even. Now that you know you can, don’t.
robuste
Haskell
C'est purement fonctionnel*
correct
génération automatique
du code Haskell
Introduction AxiomeElimination
ts |- A => B
ts |- A => B ts |- A
ts |- A => Bts |- B
ts, A |- B
Règles on utilise pour faire des preuves:
certié
conforme au
spécications
Une preuve est un fait ou un raisonnement propre à établir solidement la vérité.
-wikipédia
Coq
Haskell
Les 3 points-clés de la programmation fonctionnelle:
Les principales caractéristiques de Haskell:
Une preuve mathématique
"How do you know it works, did you test it??"
-"No, I proved it."