0% ont trouvé ce document utile (0 vote)
43 vues22 pages

Module 7

Transféré par

Miryam Mel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues22 pages

Module 7

Transféré par

Miryam Mel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PARADIGMES DE PROGRAMMATION

DIPLÔME DE FORMATION D’INGÉNIEURS EN INFORMATIQUE (FI-A1)

Module 7

Mondher Bouden

2024-2025
Programmation fonctionnelle
Caractéristiques
• La programmation fonctionnelle est basée sur le
paradigme fonctionnel de calcul.
– Un programme est conçu comme une fonction
mathématique.
– La principale composante de la programmation
fonctionnelle est la fonction.
– Les fonctions sont des valeurs de première classe.
• Elles peuvent être utilisées comme paramètres,
retournées comme résultat d’évaluation d’autres
fonctions et stockées dans des structures de données
(listes de fonctions, arbre contenant des fonctions,
enregistrements comprenant des fonctions, etc.).
Caractéristiques
• La programmation fonctionnelle pure:
– Pas d’effet de bord
– Pas de boucles (utilisation systématique de la
récursivité).
• Par contre, les langages hybrides (ou multi-
paradigmes come Python) permettent la
programmation impérative.
Quelques langages
• Lisp [McCarthy, 1958].
• Standard ML (SML) [Milner, 1987].
• Hope [Burstall & Macqueen & Sanella, 1980].
• Miranda [Turner, 1982].
• Caml [INRIA, 1985] et OCaml.
• Plus récemment :
– [Link] [Microsoft Research, 2000]
– Scala (2003).
– F# [Microsoft, 2005].
– C# 3.0 et 3.5 [Microsoft].
5 – etc.
Python
• Python n’est pas un langage fonctionnel au sens le
plus strict du terme.
• Par contre, il offre des outils traditionnels de la
programmation fonctionnelle.
– Fonctions comme des valeurs de première classe.
• map, filter, reduce, . . .
– Lambda fonctions.
– ...
• C’est ces aspects “orientés fonctionnel” que nous
allons étudier.
Fonctions
• En python, les fonctions sont des objets (comme
d’ailleurs les modules, les classes, et. . . tout !)
• On peut donc:
– Les affecter
– Les passer en paramètre
– ...
• En fait, une fonction est simplement un objet qui
implémente la méthode spécial __call__
Les fonctions sont des objets
Passer une fonction en paramètre
Fonctions anonymes (expressions Lambda)
• Une expression Lambda:
lambda args : expr(args)
• C’est l’équivalent d’une fonction qui n’a pas de nom:
def anonymous(args) :
return expr(args)
• La lambda-expression retourne simplement un
pointeur sur l’objet fonction correspondant.

• Exemple:

f = lambda x: x+1
print(f(4))
Fonctions anonymes (expressions Lambda)
• En python, le corps
d’une lambda-
expression est
limité à une seule
expression.
• Par contre, elle peut
utilisée un ou
plusieurs
paramètres.
• Elle n'inclut pas une
instruction
«return», car elle
contient toujours
une expression qui
est retournée.
Fonctions d’ordre supérieur
• Dans les langages fonctionnels, les boucles sont
facilement remplacées par des appels à des fonctions
s’appliquant à des fonctions.
• Exemple de fonction d’ordre supérieur:
– map(function, list) applique successivement une
fonction aux éléments de la liste et retourne la liste
des résultats.
– filter(function, list) retourne une liste des
éléments de list pour lesquels un prédicat est vrai.
– reduce(function, list) applique une fonction aux
deux premiers éléments de la liste, puis au résultat
et au 3e élément, puis. . . et retourne le résultat final.
Fonction map()
Fonction map()
Fonction map()
Fonction filter()
Fonction reduce()

Permet de calculer: ((((1+2)+3)+4)+5)


Fonction reduce()
Fonction reduce()
Composition de fonctions d’ordre supérieur
Fonctions récursives
Construction de fonctions d’ordre supérieur par récursivité

Vous aimerez peut-être aussi