Déboîter les constructeurs
Résumé
Nous proposons une implémentation d'une nouvelle fonctionnalité pour OCaml, le déboîtement 1 de constructeurs. Elle permet d'éliminer certains constructeurs de la représentation dynamique des valeurs quand cela ne crée pas de confusion entre différentes valeurs au même type. Nous décrivons :
-un cas d'usage sur les grands entiers où la fonctionnalité améliore les performances de code OCaml idiomatique,éliminant le besoin d'écrire du code non-sûr.
-l'analyse statique nécessaire pour accepter ou rejeter le déboîtement d'un constructeur,
-et l'impact sur la compilation du filtrage par motif.
Pour notre analyse statique, nous devons normaliser certaines expressions de type, avec une relation de normalisation qui ne termine pas nécessairement en présence de types mutuellement récursifs ; nous décrivons une analyse dynamique de terminaison qui garantit la normalisation sans rejeter les définitions de types qui nous intéressent.
Domaines
Langage de programmation [cs.PL]Origine | Fichiers produits par l'(les) auteur(s) |
---|