Académique Documents
Professionnel Documents
Culture Documents
Chapitre 4
Programmation Fonctionnelle
Noureddine AZZOUZA
1
Plan du
Cours
1. Introduction et Historique
3. Concepts principaux
4. Langage LISP
2
PLP Noureddine AZZOUZA
Introduction & Historique
3
Introduction et Historique
Introduction
Programmation Fonctionnelle
4
PLP Noureddine AZZOUZA
Programmation Fonctionnelle
Paradigme Fonctionnelle
Programmation Fonctionnelle
5
PLP Noureddine AZZOUZA
Illustration
Exemple
Programmation Fonctionnelle
6
PLP Noureddine AZZOUZA
Programmation Fonctionnelle
Uniquement des valeurs qui résultent des fonctions et peuvent être utilisée par
d’autres fonctions.
Les langages fonctionnels ne sont pas contaminés par les effets de Bord, le
séquencement explicite est d’autres caractéristiques vues comme repoussantes.
7
PLP Noureddine AZZOUZA
Historique
1941 LAMBDA calcul: est inventée par CHURCH pour étudier la calculabilité.
Programmation Fonctionnelle
1959 LISt Processing: premier langage fonctionnel symbolique pou l’IA conçu
par JOHN MCCARTHY.
8
PLP Noureddine AZZOUZA
Importance
et Domaines
9
Importance et Domaines d’utilisation
Bien adapté au parallélisme (les arguments d’une fonction peuvent être évalués
en parallèle).
Domaines d’utilisation
Importance et Domaines
Domaines d’utilisation :
Apprentissage de la programmation.
Elle est fortement présente dans les laboratoires et une faible pénétration dans
le milieu industriel.
11
PLP Noureddine AZZOUZA
Concepts
Principaux
12
Typage
Typage
Le typage peut être statique ou dynamique.
Concepts Principaux
Fort : toutes les erreurs de types sont détectées avant l’exécution « le programme
ne donne jamais une erreur de type pendant son exécution.
Faible : pas toutes les erreurs de type sont détectées avant l’exécution.
13
PLP Noureddine AZZOUZA
Typage
Inférence de type
La capacité de dériver les types sans avoir besoin de signatures explicites pour les types.
Concepts Principaux
Typage Polymorphique
typage d’une fonction polymorphique « une fonction qui peut être appelée
avec des arguments de différents types ».
Une fonction qui traite une liste d’objets de n’importe quel type a et
renvoie un entier.
14
PLP Noureddine AZZOUZA
Fonctions d’ordre supérieur
Les fonctions d’ordre supérieur sont traitées comme des valeurs de première classe
15
PLP Noureddine AZZOUZA
Évaluation Paresseuse
Évaluation Paresseuse
La stratégie d’évaluation dans laquelle les arguments de fonctions sont
Concepts Principaux
16
PLP Noureddine AZZOUZA
Portée
Portée
La portée des variables peut être statique ou dynamique :
Concepts Principaux
Statique : si les variables sont liées dans le contexte ou elles sont déclarées
Dynamique : si les variables sont liées dans le contexte ou elles sont évaluées
Exemple : (LISP)
17
PLP Noureddine AZZOUZA
Pattern matching
Pattern matching
C’est un concept très utilisé dans les langages fonctionnels modernes dont l’idée est
Concepts Principaux
programmes
Définir une même fonction par le biais de plusieurs fonctions et une seule de ces
18
PLP Noureddine AZZOUZA
LISP
19
Objets
Objets
LISP : LISt Processor (1960)
20
PLP Noureddine AZZOUZA
Structure d'un programme
Les programmes LISP sont des listes particulières où le premier terme représente une
fonction. les termes suivants sont les paramètres d'appel de cette fonction.
LISP
Conditionnelle
(IF cond liste1 liste2 ..listen)
Évalue suivant la valeur de Cond soit liste1 soit en "séquentielle« liste2, liste3, ..., listen.
22
PLP Noureddine AZZOUZA
Fonctions Utiles
QUOTE
QUOTE permet de distinguer les atomes spéciaux des constantes caractères dans les
S-expressions
Exemple :
23
PLP Noureddine AZZOUZA
Fonctions Utiles
Car
(Car ListeNonVide): fournit la première composante de la liste ListeNonVide.
Exemple :
24
PLP Noureddine AZZOUZA
Fonctions Utiles
Cdr
(Cdr ListeNonVide): fournit ListeNonVide privée de son premier élément.
Exemple :
25
PLP Noureddine AZZOUZA
Fonctions Utiles
Cons
(Car objet1 Liste): retourne une liste dont le premier terme est son premier argument
(objet1) et les termes suivants sont ceux du second argument.
Exemple :
Propriétés:
LISP
(Car ( Cons x y ) ) = x
(Cdr ( Cons x y ) ) = y
26
PLP Noureddine AZZOUZA
Fonctions Utiles
Primitives booléenne
(Atom objet): retourne T si objet est un atome, Nil autrement.
(Consp Obj) :retourne T ssi Obj est une liste non vide, Nil autrement.
(Null Obj) : retourne T ssi Obj est une liste vide, Nil autrement.
27
PLP Noureddine AZZOUZA
Fonctions Utilisateurs
)
)
28
PLP Noureddine AZZOUZA
Fonctions Utilisateurs
29
PLP Noureddine AZZOUZA
Fonctions Utilisateurs
(DE Exist (a L)
(IF (Consp L )
(Or (Exist a (Car L)) (Exist a (Cdr L)))
(Eq a L)
)
)
LISP
30
PLP Noureddine AZZOUZA
Fonctions Utilisateurs
(Car L) Cdr(L)
(Dernier (Cdr L))) Cons( Car(L) Supprimer(a Cdr(L)) )
) )
) )
31
PLP Noureddine AZZOUZA
Conclusion
32
Conclusion
Conclusion
Impact de la programmation fonctionnelle :
programmation impérative.
33
PLP Noureddine AZZOUZA