<?xml version="1.0" encoding="utf-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hal="http://hal.archives-ouvertes.fr/" xmlns:gml="http://www.opengis.net/gml/3.3/" xmlns:gmlce="http://www.opengis.net/gml/3.3/ce" version="1.1" xsi:schemaLocation="http://www.tei-c.org/ns/1.0 http://api.archives-ouvertes.fr/documents/aofr-sword.xsd">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>HAL TEI export of tel-00620486</title>
      </titleStmt>
      <publicationStmt>
        <distributor>CCSD</distributor>
        <availability status="restricted">
          <licence target="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0 - Universal</licence>
        </availability>
        <date when="2026-05-13T14:21:16+02:00"/>
      </publicationStmt>
      <sourceDesc>
        <p part="N">HAL API Platform</p>
      </sourceDesc>
    </fileDesc>
  </teiHeader>
  <text>
    <body>
      <listBibl>
        <biblFull>
          <titleStmt>
            <title xml:lang="en">Contribution to the relation between attribute grammars and functional programming</title>
            <title xml:lang="fr">Contribution aux relations entre les grammaires attribuées et la programmation fonctionnelle</title>
            <author role="aut">
              <persName>
                <forename type="first">Étienne</forename>
                <surname>Duris</surname>
              </persName>
              <email type="md5">ec9ec60b179032e09c7190a3ff035963</email>
              <email type="domain">univ-eiffel.fr</email>
              <idno type="idhal" notation="numeric">1679469</idno>
              <idno type="halauthorid" notation="string">581977-1679469</idno>
              <idno type="IDREF">https://www.idref.fr/051638975</idno>
              <affiliation ref="#struct-33911"/>
            </author>
            <editor role="depositor">
              <persName>
                <forename>Etienne</forename>
                <surname>Duris</surname>
              </persName>
              <email type="md5">debf2f268d2e28ed9900219ea07c8d9d</email>
              <email type="domain">univ-paris-est.fr</email>
            </editor>
          </titleStmt>
          <editionStmt>
            <edition n="v1" type="current">
              <date type="whenSubmitted">2011-10-05 11:33:16</date>
              <date type="whenModified">2026-05-13 12:33:25</date>
              <date type="whenReleased">2011-10-05 14:02:37</date>
              <date type="whenProduced">1998-10-05</date>
              <date type="whenEndEmbargoed">2011-10-05</date>
              <ref type="file" target="https://theses.hal.science/tel-00620486v1/document">
                <date notBefore="2011-10-05"/>
              </ref>
              <ref type="file" n="1" target="https://theses.hal.science/tel-00620486v1/file/These98.pdf" id="file-620486-212318">
                <date notBefore="2011-10-05"/>
              </ref>
            </edition>
            <respStmt>
              <resp>contributor</resp>
              <name key="171534">
                <persName>
                  <forename>Etienne</forename>
                  <surname>Duris</surname>
                </persName>
                <email type="md5">debf2f268d2e28ed9900219ea07c8d9d</email>
                <email type="domain">univ-paris-est.fr</email>
              </name>
            </respStmt>
          </editionStmt>
          <publicationStmt>
            <distributor>CCSD</distributor>
            <idno type="halId">tel-00620486</idno>
            <idno type="halUri">https://theses.hal.science/tel-00620486</idno>
            <idno type="halBibtex">duris:tel-00620486</idno>
            <idno type="halRefHtml">Informatique [cs]. Université d'Orléans, 1998. Français. &lt;a target="_blank" href="https://www.theses.fr/"&gt;&amp;#x27E8;NNT : &amp;#x27E9;&lt;/a&gt;</idno>
            <idno type="halRef">Informatique [cs]. Université d'Orléans, 1998. Français. &amp;#x27E8;NNT : &amp;#x27E9;</idno>
            <availability status="restricted">
              <licence target="https://about.hal.science/hal-authorisation-v1/">HAL Authorization<ref corresp="#file-620486-212318"/></licence>
            </availability>
          </publicationStmt>
          <seriesStmt>
            <idno type="stamp" n="ENPC" corresp="PARISTECH">École nationale des ponts et chaussées </idno>
            <idno type="stamp" n="INRIA">INRIA - Institut National de Recherche en Informatique et en Automatique</idno>
            <idno type="stamp" n="INRIA-ROCQ">INRIA Paris - Rocquencourt</idno>
            <idno type="stamp" n="PARISTECH">ParisTech</idno>
            <idno type="stamp" n="INRIA_TEST">INRIA - Institut National de Recherche en Informatique et en Automatique</idno>
            <idno type="stamp" n="CV_UNIV-MLV">CV des membres de l'Université de Marne-la-vallée</idno>
            <idno type="stamp" n="CV_LIGM" corresp="CV_UNIV-MLV">CV des membres du LIGM</idno>
            <idno type="stamp" n="TESTALAIN1">TESTALAIN1</idno>
            <idno type="stamp" n="INRIA2">INRIA 2</idno>
          </seriesStmt>
          <notesStmt/>
          <sourceDesc>
            <biblStruct>
              <analytic>
                <title xml:lang="en">Contribution to the relation between attribute grammars and functional programming</title>
                <title xml:lang="fr">Contribution aux relations entre les grammaires attribuées et la programmation fonctionnelle</title>
                <author role="aut">
                  <persName>
                    <forename type="first">Étienne</forename>
                    <surname>Duris</surname>
                  </persName>
                  <email type="md5">ec9ec60b179032e09c7190a3ff035963</email>
                  <email type="domain">univ-eiffel.fr</email>
                  <idno type="idhal" notation="numeric">1679469</idno>
                  <idno type="halauthorid" notation="string">581977-1679469</idno>
                  <idno type="IDREF">https://www.idref.fr/051638975</idno>
                  <affiliation ref="#struct-33911"/>
                </author>
              </analytic>
              <monogr>
                <imprint>
                  <date type="dateDefended">1998-10-05</date>
                </imprint>
                <authority type="institution">Université d'Orléans</authority>
                <authority type="supervisor">Didier Parigot et Gilles Roussel</authority>
                <authority type="jury">Martin Jourdan (Président)</authority>
                <authority type="jury">Françoise Bellegarde (Rapporteurs)</authority>
                <authority type="jury">Bernard Lorho (Rapporteurs)</authority>
                <authority type="jury">Charles Consel (Examinateurs)</authority>
                <authority type="jury">Gaétan Hains (Examinateurs)</authority>
                <authority type="jury">Didier Parigot (Examinateurs)</authority>
              </monogr>
            </biblStruct>
          </sourceDesc>
          <profileDesc>
            <langUsage>
              <language ident="fr">French</language>
            </langUsage>
            <textClass>
              <keywords scheme="author">
                <term xml:lang="en">attribute grammars</term>
                <term xml:lang="en">functional programming</term>
                <term xml:lang="en">structure directed programming</term>
                <term xml:lang="en">algebraic formalisms</term>
                <term xml:lang="en">static analysis</term>
                <term xml:lang="en">genericity</term>
                <term xml:lang="en">program transformations</term>
                <term xml:lang="fr">grammaires attribuées</term>
                <term xml:lang="fr">analyses statiques</term>
                <term xml:lang="fr">généricité</term>
                <term xml:lang="fr">déforestation</term>
                <term xml:lang="fr">transformations de programmes</term>
                <term xml:lang="fr">formalismes algébriques</term>
                <term xml:lang="fr">programmation dirigée par la structure</term>
                <term xml:lang="fr">programmation fonctionnelle</term>
              </keywords>
              <classCode scheme="halDomain" n="info">Computer Science [cs]</classCode>
              <classCode scheme="halTypology" n="THESE">Theses</classCode>
              <classCode scheme="halOldTypology" n="THESE">Theses</classCode>
              <classCode scheme="halTreeTypology" n="THESE">Theses</classCode>
            </textClass>
            <abstract xml:lang="en">
              <p>Software engineering has to reconcile modularity, that is required for development and maintenance phases, with efficiency, obviously essential in the practical implementation of applications. This dilemma implies that methods and techniques must be developed in order to increase the efficiency of modular programs. The aim of deforestation transformations is to discard intermediate data structures that appear when software comp onents are composed. Thus, these transformations are of great interest, especially to attribute grammar and functional programming communities. In spite of the variety of formalisms they used, this thesis compares several existing techniques and develops a new general deforestation method drawn from their advantages. First, a natural attribute grammar extension is introduced, allowing a larger functional programming class to be expressed. Then, dynamic attribute grammars are no more tied to concrete trees, to direct computations and transformations. Nevertheless, they could always be evaluated with classical attribute grammar evaluation methods. Next, the main functional deforestation methods (Wadler's algorithm, elimination of foldr/build rule, normalization of folds, fusion of hylomorphisms) are studied and compared with the descriptional comp osition of attribute grammars. Limitations of each method are established and allow suitable features for these program transformations to be determined. Finally, a new deforestation method is introduced. The symbolic composition uses the power of attribute grammar formalism and also includes a partial evaluation mechanism. This general technique can be applied to attribute grammars or to functional programs and it deforests programs for which existing methods were insufficient.</p>
            </abstract>
            <abstract xml:lang="fr">
              <p>L'ingénierie du logiciel doit concilier, d'une part, la modularité requise par les phases de développement et de maintenance et, d'autre part, l'efficacité indispensable dans la mise en oeuvre des applications. Ce dilemme nécessite des méthodes et des techniques de transformation permettant d'accroître l'efficacité des programmes modulaires. La déforestation, qui consiste à éliminer les structures intermédiaires apparaissant lors de la composition des différentes parties d'un programme, a suscité beaucoup d'intérêt, notamment en grammaires attribuées et en programmation fonctionnelle. En dépit de la diversité des formalismes utilisés, cette thèse compare les différentes techniques existantes et s'inspire de leurs atouts pour développer une nouvelle méthode de déforestation plus générale. Tout d'abord, une extension naturelle des grammaires attribuées est introduite pour permettre de représenter une plus large classe de programmes fonctionnels. Les grammaires attribuées dynamiques peuvent se passer de la présence physique d'un arbre pour guider les calculs et les transformations, mais bénéficient des méthodes classiques d'évaluation des grammaires attribuées. Ensuite, les principales méthodes fonctionnelles de déforestation (algorithme de Wadler, règle d'élimination foldr/build, normalisation des folds, fusion d'hylomorphismes) sont étudiées et comparées avec la composition descriptionnelle des grammaires attribuées. Les limitations de chaque méthode sont établies et permettent de déterminer les atouts nécessaires pour ces transformations de programmes. Finalement, une nouvelle méthode de déforestation est proposée. La composition symbolique utilise la puissance du formalisme des grammaires attribuées et incorpore un mécanisme d'évaluation partielle. Cette technique générale peut être appliquée sur des grammaires attribuées ou sur des programmes fonctionnels et permet de déforester des programmes pour lesquelles les méthodes existantes restaient impuissantes.</p>
            </abstract>
          </profileDesc>
        </biblFull>
      </listBibl>
    </body>
    <back>
      <listOrg type="structures">
        <org type="researchteam" xml:id="struct-33911" status="OLD">
          <idno type="RNSR">198622078N</idno>
          <orgName>Syntactic Tools for Program Construction and Analysis</orgName>
          <orgName type="acronym">OSCAR</orgName>
          <desc>
            <address>
              <country key="FR"/>
            </address>
          </desc>
          <listRelation>
            <relation active="#struct-86790" type="direct"/>
            <relation active="#struct-300009" type="indirect"/>
          </listRelation>
        </org>
        <org type="laboratory" xml:id="struct-86790" status="OLD">
          <orgName>Inria Paris-Rocquencourt</orgName>
          <date type="end">2016-03-30</date>
          <desc>
            <address>
              <addrLine>INRIA Rocquencourt : Domaine de Voluceau, Rocquencourt B.P. 105 78153 le Chesnay Cedex</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.inria.fr/centre/paris-rocquencourt</ref>
          </desc>
          <listRelation>
            <relation active="#struct-300009" type="direct"/>
          </listRelation>
        </org>
        <org type="institution" xml:id="struct-300009" status="VALID">
          <idno type="ROR">https://ror.org/02kvxyf05</idno>
          <orgName>Institut National de Recherche en Informatique et en Automatique</orgName>
          <orgName type="acronym">Inria</orgName>
          <desc>
            <address>
              <addrLine>Domaine de VoluceauRocquencourt - BP 10578153 Le Chesnay Cedex</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.inria.fr/en/</ref>
          </desc>
        </org>
      </listOrg>
    </back>
  </text>
</TEI>