Évaluation partielle
En informatique, l'évaluation partielle consiste à remplacer un programme (ou une fonction ou procédure) généraliste par un programme (ou fonction ou procédure) spécialisé[1], qui sera plus rapide ou plus lisible.
Un exemple en Ocaml serait la fonction d'ordre supérieure suivante aff qui à deux entiers x et y associe la fonction à un argument entier (ici z) transformant l'entier z en x*y + z:
let aff x y = fun z -> x*y + z
Alors aff 0 0 est la fonction identité sur les entiers, et aff 2 0 est la fonction qui double son argument entier.
Evaluer partiellement aff 0 0 consiste à construire le code machine de la fonction identité (plus efficace qu'une fermeture, car on n'y ferait aucune multiplication ou addition)
Usage
Ce remplacement peut concerner par exemple les routines de multiplication de matrices numériques : une fonction générale de multiplication de matrice est plus lente et plus complexe que la fonction particularisée, quand on sait que la matrice de gauche est constante et triangulaire.
Les compilateurs optimisants (notamment GCC ou SBCL) utilisent l'évaluation partielle.
Références
- ↑ Sandrine Blazy, Sémantiques formelles : Mémoire d'Habilitation à diriger des recherches, spécialité informatique, Université d'Évry Val d'Essonne, (HAL tel-00336576, lire en ligne), p. 23-25
Voir aussi
Bibliographie
- (en) Yoshihiko Futamura, « Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler », Higher Order Symbolic Computation, vol. 12, no 4, , p. 381–391 (DOI 10.1023/A:1010095604496, lire en ligne, consulté le )
- (en) Charles Consel et Olivier Danvy, « Tutorial notes on partial evaluation », POPL: Principles of Programming Languages, Association for Computing Machinery Press, no ' « POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages », , p. 493–501 (ISBN 978-0-89791-560-1, DOI 10.1145/158511.158707, lire en ligne, consulté le )
- Portail de la logique
- Portail de l'informatique théorique