<?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 hal-03125031</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-16T08:34:11+02:00"/>
      </publicationStmt>
      <sourceDesc>
        <p part="N">HAL API Platform</p>
      </sourceDesc>
    </fileDesc>
  </teiHeader>
  <text>
    <body>
      <listBibl>
        <biblFull>
          <titleStmt>
            <title xml:lang="en">A practical mode system for recursive definitions</title>
            <author role="aut">
              <persName>
                <forename type="first">Alban</forename>
                <surname>Reynaud</surname>
              </persName>
              <idno type="halauthorid">1485735-0</idno>
              <affiliation ref="#struct-6818"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Gabriel</forename>
                <surname>Scherer</surname>
              </persName>
              <email type="md5">d40d0983c79ff0c8abc4d004db032624</email>
              <email type="domain">gmail.com</email>
              <idno type="idhal" notation="string">scherer-gabriel</idno>
              <idno type="idhal" notation="numeric">170100</idno>
              <idno type="halauthorid" notation="string">16173-170100</idno>
              <idno type="ORCID">https://orcid.org/0000-0003-1758-3938</idno>
              <orgName ref="#struct-300009"/>
              <affiliation ref="#struct-577948"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Jeremy</forename>
                <surname>Yallop</surname>
              </persName>
              <idno type="halauthorid">2140355-0</idno>
              <affiliation ref="#struct-237843"/>
            </author>
            <editor role="depositor">
              <persName>
                <forename>Scherer</forename>
                <surname>Gabriel</surname>
              </persName>
              <email type="md5">d40d0983c79ff0c8abc4d004db032624</email>
              <email type="domain">gmail.com</email>
            </editor>
          </titleStmt>
          <editionStmt>
            <edition n="v1" type="current">
              <date type="whenSubmitted">2021-01-29 10:51:56</date>
              <date type="whenModified">2026-02-07 05:20:44</date>
              <date type="whenReleased">2021-01-29 11:39:24</date>
              <date type="whenProduced">2021-01-04</date>
              <date type="whenEndEmbargoed">2021-01-29</date>
              <ref type="file" target="https://inria.hal.science/hal-03125031v1/document">
                <date notBefore="2021-01-29"/>
              </ref>
              <ref type="file" subtype="author" n="1" target="https://inria.hal.science/hal-03125031v1/file/letrec.pdf" id="file-3125031-2738287">
                <date notBefore="2021-01-29"/>
              </ref>
              <ref type="externalLink" target="http://arxiv.org/pdf/1811.08134"/>
            </edition>
            <respStmt>
              <resp>contributor</resp>
              <name key="176930">
                <persName>
                  <forename>Scherer</forename>
                  <surname>Gabriel</surname>
                </persName>
                <email type="md5">d40d0983c79ff0c8abc4d004db032624</email>
                <email type="domain">gmail.com</email>
              </name>
            </respStmt>
          </editionStmt>
          <publicationStmt>
            <distributor>CCSD</distributor>
            <idno type="halId">hal-03125031</idno>
            <idno type="halUri">https://inria.hal.science/hal-03125031</idno>
            <idno type="halBibtex">reynaud:hal-03125031</idno>
            <idno type="halRefHtml">&lt;i&gt;Proceedings of the ACM on Programming Languages&lt;/i&gt;, 2021, 5 (POPL), pp.1-29. &lt;a target="_blank" href="https://dx.doi.org/10.1145/3434326"&gt;&amp;#x27E8;10.1145/3434326&amp;#x27E9;&lt;/a&gt;</idno>
            <idno type="halRef">Proceedings of the ACM on Programming Languages, 2021, 5 (POPL), pp.1-29. &amp;#x27E8;10.1145/3434326&amp;#x27E9;</idno>
            <availability status="restricted">
              <licence target="https://about.hal.science/hal-authorisation-v1/">HAL Authorization<ref corresp="#file-3125031-2738287"/></licence>
            </availability>
          </publicationStmt>
          <seriesStmt>
            <idno type="stamp" n="ENS-LYON">École Normale Supérieure de Lyon</idno>
            <idno type="stamp" n="X">École polytechnique</idno>
            <idno type="stamp" n="CNRS">CNRS - Centre national de la recherche scientifique</idno>
            <idno type="stamp" n="INRIA">INRIA - Institut National de Recherche en Informatique et en Automatique</idno>
            <idno type="stamp" n="LIX" corresp="X">Laboratoire d'informatique de l'Ecole polytechnique</idno>
            <idno type="stamp" n="INRIA-SACLAY" corresp="INRIA">INRIA Saclay - Ile de France</idno>
            <idno type="stamp" n="X-DEP-INFO">Département d'informatique de l’École polytechnique</idno>
            <idno type="stamp" n="INRIA_TEST">INRIA - Institut National de Recherche en Informatique et en Automatique</idno>
            <idno type="stamp" n="TESTALAIN1">TESTALAIN1</idno>
            <idno type="stamp" n="INRIA2">INRIA 2</idno>
            <idno type="stamp" n="INRIA-300009">Inria 300009</idno>
            <idno type="stamp" n="IP_PARIS">Institut Polytechnique de Paris</idno>
            <idno type="stamp" n="UDL">UDL</idno>
            <idno type="stamp" n="UNIV-LYON">Université de Lyon</idno>
            <idno type="stamp" n="GS-COMPUTER-SCIENCE">Graduate School Computer Science</idno>
            <idno type="stamp" n="INRIAARTDOI">INRIAARTDOI</idno>
            <idno type="stamp" n="INRIA-ROYAUMEUNI">INRIA-ROYAUMEUNI</idno>
            <idno type="stamp" n="DEPARTEMENT-DE-MATHEMATIQUES">Collection du Département de Mathématiques</idno>
            <idno type="stamp" n="IP-PARIS-DEPARTEMENT-MATHEMATIQUES">Département de Mathèmatiques</idno>
            <idno type="stamp" n="IP-PARIS-INFORMATIQUE-DONNEES-ET-IA">IP Paris Département d'Informatique, de Données et d'IA</idno>
          </seriesStmt>
          <notesStmt>
            <note type="audience" n="2">International</note>
            <note type="popular" n="0">No</note>
            <note type="peer" n="1">Yes</note>
          </notesStmt>
          <sourceDesc>
            <biblStruct>
              <analytic>
                <title xml:lang="en">A practical mode system for recursive definitions</title>
                <author role="aut">
                  <persName>
                    <forename type="first">Alban</forename>
                    <surname>Reynaud</surname>
                  </persName>
                  <idno type="halauthorid">1485735-0</idno>
                  <affiliation ref="#struct-6818"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Gabriel</forename>
                    <surname>Scherer</surname>
                  </persName>
                  <email type="md5">d40d0983c79ff0c8abc4d004db032624</email>
                  <email type="domain">gmail.com</email>
                  <idno type="idhal" notation="string">scherer-gabriel</idno>
                  <idno type="idhal" notation="numeric">170100</idno>
                  <idno type="halauthorid" notation="string">16173-170100</idno>
                  <idno type="ORCID">https://orcid.org/0000-0003-1758-3938</idno>
                  <orgName ref="#struct-300009"/>
                  <affiliation ref="#struct-577948"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Jeremy</forename>
                    <surname>Yallop</surname>
                  </persName>
                  <idno type="halauthorid">2140355-0</idno>
                  <affiliation ref="#struct-237843"/>
                </author>
              </analytic>
              <monogr>
                <idno type="halJournalId" status="VALID">120491</idno>
                <idno type="issn">2475-1421</idno>
                <title level="j">Proceedings of the ACM on Programming Languages</title>
                <imprint>
                  <publisher>ACM</publisher>
                  <biblScope unit="volume">5</biblScope>
                  <biblScope unit="issue">POPL</biblScope>
                  <biblScope unit="pp">1-29</biblScope>
                  <date type="datePub">2021-01-04</date>
                </imprint>
              </monogr>
              <idno type="arxiv">1811.08134</idno>
              <idno type="doi">10.1145/3434326</idno>
            </biblStruct>
          </sourceDesc>
          <profileDesc>
            <langUsage>
              <language ident="en">English</language>
            </langUsage>
            <textClass>
              <keywords scheme="author">
                <term xml:lang="en">functional programming</term>
                <term xml:lang="en">ML</term>
                <term xml:lang="en">semantics</term>
                <term xml:lang="en">types</term>
                <term xml:lang="en">call-by-value</term>
                <term xml:lang="en">recursion</term>
              </keywords>
              <classCode scheme="halDomain" n="info.info-pl">Computer Science [cs]/Programming Languages [cs.PL]</classCode>
              <classCode scheme="halTypology" n="ART">Journal articles</classCode>
              <classCode scheme="halOldTypology" n="ART">Journal articles</classCode>
              <classCode scheme="halTreeTypology" n="ART">Journal articles</classCode>
            </textClass>
            <abstract xml:lang="en">
              <p>In call-by-value languages, some mutually-recursive definitions can be safely evaluated to build recursive functions or cyclic data structures, but some definitions (let rec x = x + 1) contain vicious circles and their evaluation fails at runtime. We propose a new static analysis to check the absence of such runtime failures. We present a set of declarative inference rules, prove its soundness with respect to the reference sourcelevel semantics of Nordlander, Carlsson, and Gill [2008], and show that it can be directed into an algorithmic backwards analysis check in a surprisingly simple way. Our implementation of this new check replaced the existing check used by the OCaml programming language, a fragile syntactic criterion which let several subtle bugs slip through as the language kept evolving. We document some issues that arise when advanced features of a real-world functional language (exceptions in first-class modules, GADTs, etc.) interact with safety checking for recursive definitions. CCS Concepts: • Software and its engineering → General programming languages; Recursion.</p>
            </abstract>
          </profileDesc>
        </biblFull>
      </listBibl>
    </body>
    <back>
      <listOrg type="structures">
        <org type="institution" xml:id="struct-6818" status="VALID">
          <idno type="IdRef">149154992</idno>
          <idno type="ISNI">0000000123319856</idno>
          <idno type="ROR">https://ror.org/04zmssz18</idno>
          <idno type="Wikidata">Q10159</idno>
          <orgName>École normale supérieure de Lyon</orgName>
          <orgName type="acronym">ENS de Lyon</orgName>
          <date type="start">2010-01-01</date>
          <desc>
            <address>
              <addrLine>15 parvis René Descartes - BP 7000 - 69342 Lyon Cedex 07</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.ens-lyon.fr/</ref>
          </desc>
          <listRelation>
            <relation active="#struct-301088" type="direct"/>
          </listRelation>
        </org>
        <org type="researchteam" xml:id="struct-577948" status="VALID">
          <idno type="RNSR">201923495K</idno>
          <idno type="ROR">https://ror.org/016sv6m22</idno>
          <orgName>Automatisation et ReprésenTation: fOndation du calcUl et de la déducTion</orgName>
          <orgName type="acronym">PARTOUT</orgName>
          <date type="start">2019-12-01</date>
          <date type="end">2028-12-31</date>
          <desc>
            <address>
              <addrLine>1 rue Honoré d'Estienne d'OrvesBâtiment Alan TuringCampus de l'École Polytechnique91120 Palaiseau</addrLine>
              <country key="FR"/>
            </address>
          </desc>
          <listRelation>
            <relation active="#struct-2071" type="direct"/>
            <relation active="#struct-300340" type="indirect"/>
            <relation active="#struct-563936" type="indirect"/>
            <relation name="UMR7161" active="#struct-441569" type="indirect"/>
            <relation active="#struct-1225635" type="direct"/>
            <relation active="#struct-118511" type="indirect"/>
            <relation active="#struct-300009" type="indirect"/>
          </listRelation>
        </org>
        <org type="institution" xml:id="struct-237843" status="VALID">
          <idno type="IdRef">027706338</idno>
          <idno type="ROR">https://ror.org/013meh722</idno>
          <orgName>University of Cambridge [Cambridge, UK]</orgName>
          <orgName type="acronym">CAM</orgName>
          <desc>
            <address>
              <addrLine>The Old Schools, Trinity Lane, Cambridge CB2 1TN</addrLine>
              <country key="GB"/>
            </address>
            <ref type="url">http://www.cam.ac.uk/</ref>
          </desc>
        </org>
        <org type="regroupinstitution" xml:id="struct-301088" status="VALID">
          <idno type="ROR">https://ror.org/01rk35k63</idno>
          <orgName>Université de Lyon</orgName>
          <desc>
            <address>
              <addrLine>92 rue Pasteur - CS 30122, 69361 Lyon Cedex 07</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.universite-lyon.fr/</ref>
          </desc>
        </org>
        <org type="laboratory" xml:id="struct-2071" status="VALID">
          <idno type="IdRef">196509955</idno>
          <idno type="ISNI">0000000403673665</idno>
          <idno type="RNSR">200519331V</idno>
          <idno type="ROR">https://ror.org/04afed728</idno>
          <idno type="Wikidata">Q16009025</idno>
          <orgName>Laboratoire d'informatique de l'École polytechnique [Palaiseau]</orgName>
          <orgName type="acronym">LIX</orgName>
          <date type="start">2005-01-01</date>
          <desc>
            <address>
              <addrLine>1 Rue Honoré d’Estienne d’Orves, Bâtiment Alain Turing, 91120 Palaiseau</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.lix.polytechnique.fr/</ref>
          </desc>
          <listRelation>
            <relation active="#struct-300340" type="direct"/>
            <relation active="#struct-563936" type="indirect"/>
            <relation name="UMR7161" active="#struct-441569" type="direct"/>
          </listRelation>
        </org>
        <org type="institution" xml:id="struct-300340" status="VALID">
          <idno type="IdRef">027309320</idno>
          <idno type="ISNI">0000000121581279</idno>
          <idno type="ROR">https://ror.org/05hy3tk52</idno>
          <idno type="Wikidata">Q273626</idno>
          <orgName>École polytechnique</orgName>
          <orgName type="acronym">X</orgName>
          <date type="start">1794-03-11</date>
          <desc>
            <address>
              <addrLine>Route de Saclay, 91128 Palaiseau Cedex</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.polytechnique.edu/</ref>
          </desc>
          <listRelation>
            <relation active="#struct-563936" type="direct"/>
          </listRelation>
        </org>
        <org type="regroupinstitution" xml:id="struct-563936" status="VALID">
          <idno type="IdRef">238327159</idno>
          <idno type="ISNI">0000000502717600</idno>
          <idno type="ROR">https://ror.org/042tfbd02</idno>
          <idno type="Wikidata">Q48759778</idno>
          <orgName>Institut Polytechnique de Paris</orgName>
          <orgName type="acronym">IP Paris</orgName>
          <date type="start">2019-06-02</date>
          <desc>
            <address>
              <addrLine>Route de Saclay, 91120 Palaiseau Cedex, France</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.ip-paris.fr</ref>
          </desc>
        </org>
        <org type="regroupinstitution" xml:id="struct-441569" status="VALID">
          <idno type="IdRef">02636817X</idno>
          <idno type="ISNI">0000000122597504</idno>
          <idno type="ROR">https://ror.org/02feahw73</idno>
          <orgName>Centre National de la Recherche Scientifique</orgName>
          <orgName type="acronym">CNRS</orgName>
          <date type="start">1939-10-19</date>
          <desc>
            <address>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.cnrs.fr/</ref>
          </desc>
        </org>
        <org type="department" xml:id="struct-1225635" status="VALID">
          <idno type="ROR">https://ror.org/026839t73</idno>
          <orgName>Centre Inria de l'Institut Polytechnique de Paris</orgName>
          <date type="start">2022-11-01</date>
          <desc>
            <address>
              <addrLine>1 rue Honoré d'Estienne d'Orves –Bâtiment Alan Turing –Campus de l'École Polytechnique –91120 Palaiseau</addrLine>
              <country key="FR"/>
            </address>
          </desc>
          <listRelation>
            <relation active="#struct-118511" type="direct"/>
            <relation active="#struct-300009" type="indirect"/>
          </listRelation>
        </org>
        <org type="laboratory" xml:id="struct-118511" status="VALID">
          <idno type="RNSR">200818248E</idno>
          <idno type="ROR">https://ror.org/0315e5x55</idno>
          <orgName>Centre Inria de Saclay</orgName>
          <desc>
            <address>
              <addrLine>1 rue Honoré d'Estienne d'OrvesBâtiment Alan TuringCampus de l'École Polytechnique91120 Palaiseau</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.inria.fr/centre/saclay</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>