Fonctionnel
#Fonctionnel
Fonctions pures, immutabilité, fonctions d’ordre supérieur, récursion et évaluation paresseuse (aperçu).
#Exemple (map/filter/reduce en Python)
Purs vs impurs: viser des fonctions déterministes sans effets de bord, pour tester et composer.
#Exercice : Pipeline de traitement de données
Implémentez une pipeline de traitement de données en utilisant des fonctions pures et la composition pour transformer une liste de dictionnaires représentant des utilisateurs.
#Instructions
- Créez des fonctions pures pour chaque étape de transformation :
filter_adults(users)
: Filtrer les utilisateurs de 18 ans et plus.normalize_names(users)
: Normaliser les noms (capitaliser la première lettre).add_age_group(users)
: Ajouter un groupe d'âge ('young', 'adult', 'senior').sort_by_name(users)
: Trier par nom.
- Implémentez une fonction
compose
pour composer plusieurs fonctions en une seule. - Appliquez la pipeline à une liste d'utilisateurs.
#Exemple de code
pythonpython
1def filter_adults(users):2 return [user for user in users if user['age'] >= 18]3 4def normalize_names(users):5 return [{'name': user['name'].capitalize(), 'age': user['age']} for user in users]6 7def add_age_group(users):8 def get_age_group(age):9 if age < 30:10 return 'young'11 elif age < 60:12 return 'adult'13 else:14 return 'senior'