Lazier Imperative Programming

Rémi Douence 1 Nicolas Tabareau 1, 2
1 ASCOLA - Aspect and composition languages
Inria Rennes – Bretagne Atlantique , Département informatique - EMN, LINA - Laboratoire d'Informatique de Nantes Atlantique
Résumé : La paresse est un concept puissant en programmation fonctionnelle qui permet la réutilisation de fonctions générales dans un contexte spécifique, tout en conservant des performances proches de l'efficacité de définitions dédiées. L'évaluation paresseuse peut être utilisée dans la programmation impérativea aussi. Il y a vingt ans, John Launchbury préconisait déjà la programmation impérative paresseuse, mais le niveau de paresse de son cadre reste limité: un seul effet peut déclencher de nombreux calculs retardés, même si ces calculs ne sont pas nécessaires à l'exactitude de l'évaluation. Vingt ans après, la situation n'a pas changée. Dans cet article, nous proposons un cadre Haskell pour spécifier les effets des programmes impératifs ainsi que leurs dépendances. Notre cadre est basé sur le transformateur de monade opérationnelle qui encapsule une présentation algébrique des opérations à effets. Un transformateur de monade paresseux est alors en charge de retarder les calculs non nécessaires en maintenant une trace de fermetures impératives. des fermetures auto-modifiable. Nous présentons une sémantique d'un $\lambda$-calcul en appel par besoin étendu avec des fonctionnalités impératives strictes et paresseuses et prouvons le bien-fondé de notre approche. Alors qu'à l'origine motivé par une utilisation moins rigide des fonctions étrangères, nous montrons que notre approche est fructueuse pour un scénario simple basé sur les tableaux mutables triés. En outre, nous pouvons profiter d'équations entre opérations algébriques afin d'optimiser dynamiquement la composition des calculs impératif.
Type de document :
Rapport
[Research Report] RR-8569, INRIA. 2014
Liste complète des métadonnées

Littérature citée [13 références]  Voir  Masquer  Télécharger

https://hal.inria.fr/hal-01025633
Contributeur : Nicolas Tabareau <>
Soumis le : mercredi 23 juillet 2014 - 11:38:20
Dernière modification le : mercredi 5 décembre 2018 - 01:22:15
Document(s) archivé(s) le : mardi 25 novembre 2014 - 14:06:35

Fichier

RR-8569.pdf
Fichiers produits par l'(les) auteur(s)

Identifiants

  • HAL Id : hal-01025633, version 2

Citation

Rémi Douence, Nicolas Tabareau. Lazier Imperative Programming. [Research Report] RR-8569, INRIA. 2014. 〈hal-01025633v2〉

Partager

Métriques

Consultations de la notice

494

Téléchargements de fichiers

291