Programmation fonctionnelle - Évaluation paresseuse

L'évaluation paresseuse est une stratégie d'évaluation qui contient l'évaluation d'une expression jusqu'à ce que sa valeur soit nécessaire. Cela évite les évaluations répétées.Haskell est un bon exemple d'un tel langage de programmation fonctionnel dont les fondamentaux sont basés sur Lazy Evaluation.

L'évaluation paresseuse est utilisée dans les fonctions de carte Unix pour améliorer leurs performances en ne chargeant que les pages requises à partir du disque. Aucune mémoire ne sera allouée pour les pages restantes.

Évaluation paresseuse - Avantages

  • Il permet au moteur d'exécution du langage de supprimer les sous-expressions qui ne sont pas directement liées au résultat final de l'expression.

  • Il réduit la complexité temporelle d'un algorithme en supprimant les calculs temporaires et les conditions.

  • Il permet au programmeur d'accéder aux composants des structures de données dans le désordre après leur initialisation, tant qu'ils sont libres de toute dépendance circulaire.

  • Il est le mieux adapté pour charger des données qui seront rarement consultées.

Évaluation paresseuse - inconvénients

  • Cela force le moteur d'exécution du langage à tenir l'évaluation des sous-expressions jusqu'à ce qu'il soit requis dans le résultat final en créant thunks (objets retardés).

  • Parfois, cela augmente la complexité spatiale d'un algorithme.

  • Il est très difficile de trouver ses performances car il contient des bruits d'expressions avant leur exécution.

Évaluation paresseuse à l'aide de Python

le rangeLa méthode en Python suit le concept de l'évaluation paresseuse. Cela permet d'économiser du temps d'exécution pour des plages plus grandes et nous n'avons jamais besoin de toutes les valeurs à la fois, donc cela économise également la consommation de mémoire. Jetez un œil à l'exemple suivant.

r = range(10) 
print(r) 
range(0, 10) 
print(r[3])

Il produira la sortie suivante -

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
3