Rigid mixin modules.
Résumé
Mixin modules are a notion of modules that allows cross-module recursion and late binding, two features missing in ML-style modules. Unfortunately, they are easier to define in a call-by-name setting. In a call-by-value setting, mixin modules tend to conflict with the usual static restrictions on recursive definitions. Moreover, the semantics of instantiation has to specify an order of evaluation, which involves a difficult design choice. Previous proposals rely on the dependencies between components to compute a valid order of evaluation. In such systems, mixin module types must carry some information about the dependencies between their components, which makes them rather impractical. In this paper, we propose a new design for mixin modules in a call-by-value setting, which avoids this problem. The formalism we obtain is much simpler than previous notions of mixin modules, although slightly less powerful.
Les modules mixins sont une notion de modules qui permet la récursion entre modules et la liaison tardive, deux traits manquants aux modules de ML. néanmoins, leur définition est plus aisée en appel par nom. Dans un contexte d'appel par valeur, elle pose des problèmes de définitions récursives illégales et d'ordre d'évaluation au moment de l'instantiation. Des travaux précédents ont proposé de s'appuyer sur les dépendances entre définition pour calculer un ordre d’évaluation valide. Dans ces systèmes, les types de modules mixins doivent contenir de l'information sur les dépendances entre leurs composantes, ce qui les rend inadaptés.Dans ce papier, nous proposons une nouvelle définition des modules mixins en appel par valeur, qui évite ce problème. Le formalisme obtenu est beaucoup plus simple, bien que légèrement moins puissant.
Origine | Fichiers produits par l'(les) auteur(s) |
---|