{"id":"https://openalex.org/W3115032872","doi":"https://doi.org/10.1145/3434326","title":"A practical mode system for recursive definitions","display_name":"A practical mode system for recursive definitions","publication_year":2021,"publication_date":"2021-01-04","ids":{"openalex":"https://openalex.org/W3115032872","doi":"https://doi.org/10.1145/3434326","mag":"3115032872"},"language":"en","primary_location":{"id":"doi:10.1145/3434326","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3434326","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3434326","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref","datacite"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3434326","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5067806865","display_name":"Alban Reynaud","orcid":"https://orcid.org/0000-0003-4047-7770"},"institutions":[{"id":"https://openalex.org/I113428412","display_name":"\u00c9cole Normale Sup\u00e9rieure de Lyon","ror":"https://ror.org/04zmssz18","country_code":"FR","type":"education","lineage":["https://openalex.org/I113428412","https://openalex.org/I203339264"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Alban Reynaud","raw_affiliation_strings":["ENS Lyon, France"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"ENS Lyon, France","institution_ids":["https://openalex.org/I113428412"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5047042180","display_name":"Gabriel Scherer","orcid":"https://orcid.org/0000-0003-1758-3938"},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en sciences et technologies du num\u00e9rique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"government","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Gabriel Scherer","raw_affiliation_strings":["Inria, France"],"raw_orcid":"https://orcid.org/0000-0003-1758-3938","affiliations":[{"raw_affiliation_string":"Inria, France","institution_ids":["https://openalex.org/I1326498283"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5020576379","display_name":"Jeremy Yallop","orcid":"https://orcid.org/0009-0002-1650-6340"},"institutions":[{"id":"https://openalex.org/I241749","display_name":"University of Cambridge","ror":"https://ror.org/013meh722","country_code":"GB","type":"education","lineage":["https://openalex.org/I241749"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Jeremy Yallop","raw_affiliation_strings":["University of Cambridge, UK","CAM - University of Cambridge [UK] (The Old Schools, Trinity Lane, Cambridge CB2 1TN - United Kingdom)"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Cambridge, UK","institution_ids":["https://openalex.org/I241749"]},{"raw_affiliation_string":"CAM - University of Cambridge [UK] (The Old Schools, Trinity Lane, Cambridge CB2 1TN - United Kingdom)","institution_ids":["https://openalex.org/I241749"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":3,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.2605,"has_fulltext":true,"cited_by_count":2,"citation_normalized_percentile":{"value":0.62300449,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":94},"biblio":{"volume":"5","issue":"POPL","first_page":"1","last_page":"29"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.998199999332428,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.996399998664856,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/soundness","display_name":"Soundness","score":0.8485540151596069},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8009607791900635},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7648420333862305},{"id":"https://openalex.org/keywords/set","display_name":"Set (abstract data type)","score":0.5197329521179199},{"id":"https://openalex.org/keywords/class","display_name":"Class (philosophy)","score":0.4982938766479492},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.49214237928390503},{"id":"https://openalex.org/keywords/type-inference","display_name":"Type inference","score":0.46691325306892395},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.46020764112472534},{"id":"https://openalex.org/keywords/static-analysis","display_name":"Static analysis","score":0.4342576861381531},{"id":"https://openalex.org/keywords/lazy-evaluation","display_name":"Lazy evaluation","score":0.4296696186065674},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.4117884635925293},{"id":"https://openalex.org/keywords/inference","display_name":"Inference","score":0.3289836049079895},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.14839598536491394}],"concepts":[{"id":"https://openalex.org/C39920170","wikidata":"https://www.wikidata.org/wiki/Q693083","display_name":"Soundness","level":2,"score":0.8485540151596069},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8009607791900635},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7648420333862305},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.5197329521179199},{"id":"https://openalex.org/C2777212361","wikidata":"https://www.wikidata.org/wiki/Q5127848","display_name":"Class (philosophy)","level":2,"score":0.4982938766479492},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.49214237928390503},{"id":"https://openalex.org/C198370458","wikidata":"https://www.wikidata.org/wiki/Q586459","display_name":"Type inference","level":3,"score":0.46691325306892395},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.46020764112472534},{"id":"https://openalex.org/C97686452","wikidata":"https://www.wikidata.org/wiki/Q7604153","display_name":"Static analysis","level":2,"score":0.4342576861381531},{"id":"https://openalex.org/C128099668","wikidata":"https://www.wikidata.org/wiki/Q573952","display_name":"Lazy evaluation","level":3,"score":0.4296696186065674},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.4117884635925293},{"id":"https://openalex.org/C2776214188","wikidata":"https://www.wikidata.org/wiki/Q408386","display_name":"Inference","level":2,"score":0.3289836049079895},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.14839598536491394}],"mesh":[],"locations_count":5,"locations":[{"id":"doi:10.1145/3434326","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3434326","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3434326","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:1811.08134","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1811.08134","pdf_url":"https://arxiv.org/pdf/1811.08134","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"pmh:oai:HAL:hal-03125031v1","is_oa":false,"landing_page_url":"https://inria.hal.science/hal-03125031","pdf_url":null,"source":{"id":"https://openalex.org/S4306402512","display_name":"HAL (Le Centre pour la Communication Scientifique Directe)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1294671590","host_organization_name":"Centre National de la Recherche Scientifique","host_organization_lineage":["https://openalex.org/I1294671590"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Proceedings of the ACM on Programming Languages, 2021, 5 (POPL), pp.1-29. &#x27E8;10.1145/3434326&#x27E9;","raw_type":"info:eu-repo/semantics/article"},{"id":"pmh:oai:www.repository.cam.ac.uk:1810/317229","is_oa":true,"landing_page_url":"https://www.repository.cam.ac.uk/handle/1810/317229","pdf_url":null,"source":{"id":"https://openalex.org/S4306401777","display_name":"Apollo (University of Cambridge)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I241749","host_organization_name":"University of Cambridge","host_organization_lineage":["https://openalex.org/I241749"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"Article"},{"id":"doi:10.17863/cam.64342","is_oa":true,"landing_page_url":"https://doi.org/10.17863/cam.64342","pdf_url":null,"source":{"id":"https://openalex.org/S7407050737","display_name":"Apollo","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":null,"is_accepted":false,"is_published":null,"raw_source_name":null,"raw_type":"JournalArticle"}],"best_oa_location":{"id":"doi:10.1145/3434326","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3434326","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3434326","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3115032872.pdf","grobid_xml":"https://content.openalex.org/works/W3115032872.grobid-xml"},"referenced_works_count":37,"referenced_works":["https://openalex.org/W16606802","https://openalex.org/W34175919","https://openalex.org/W120450198","https://openalex.org/W168996756","https://openalex.org/W202324359","https://openalex.org/W1496121453","https://openalex.org/W1587388778","https://openalex.org/W1829244603","https://openalex.org/W1934781858","https://openalex.org/W2000817748","https://openalex.org/W2004843654","https://openalex.org/W2030663607","https://openalex.org/W2084640400","https://openalex.org/W2096081453","https://openalex.org/W2101225843","https://openalex.org/W2109404349","https://openalex.org/W2112022010","https://openalex.org/W2128113696","https://openalex.org/W2130480853","https://openalex.org/W2140764366","https://openalex.org/W2148363954","https://openalex.org/W2151100069","https://openalex.org/W2151716725","https://openalex.org/W2247694024","https://openalex.org/W2573436692","https://openalex.org/W2592977449","https://openalex.org/W2609296377","https://openalex.org/W2949948326","https://openalex.org/W3047163819","https://openalex.org/W3099980614","https://openalex.org/W3101389771","https://openalex.org/W3104645646","https://openalex.org/W3122461614","https://openalex.org/W3131810369","https://openalex.org/W3195139395","https://openalex.org/W4234739870","https://openalex.org/W6601413849"],"related_works":["https://openalex.org/W2867457158","https://openalex.org/W2159846532","https://openalex.org/W2979331965","https://openalex.org/W2139966078","https://openalex.org/W3019138974","https://openalex.org/W1966091859","https://openalex.org/W2294370068","https://openalex.org/W138394062","https://openalex.org/W2569392808","https://openalex.org/W2105232714"],"abstract_inverted_index":{"In":[0],"call-by-value":[1],"languages,":[2],"some":[3,19,127],"mutually-recursive":[4],"definitions":[5,20],"can":[6,79],"be":[7,80],"safely":[8],"evaluated":[9],"to":[10,43,64],"build":[11],"recursive":[12,150],"functions":[13],"or":[14],"cyclic":[15],"data":[16],"structures,":[17],"but":[18],"(let":[21],"rec":[22],"x":[23,25],"=":[24],"+":[26],"1)":[27],"contain":[28],"vicious":[29],"circles":[30],"and":[31,72,75],"their":[32],"evaluation":[33],"fails":[34],"at":[35],"runtime.":[36],"We":[37,51,125],"propose":[38],"a":[39,53,89,109,135],"new":[40,97],"static":[41],"analysis":[42,86],"check":[44,87,98,102],"the":[45,65,100,105,121],"absence":[46],"of":[47,55,69,95,134],"such":[48],"runtime":[49],"failures.":[50],"present":[52],"set":[54],"declarative":[56],"inference":[57],"rules,":[58],"prove":[59],"its":[60],"soundness":[61],"with":[62,146],"respect":[63],"reference":[66],"source-level":[67],"semantics":[68],"Nordlander,":[70],"Carlsson,":[71],"Gill":[73],"[2008],":[74],"show":[76],"that":[77,129],"it":[78],"directed":[81],"into":[82],"an":[83],"algorithmic":[84],"backwards":[85],"in":[88,140],"surprisingly":[90],"simple":[91],"way.":[92],"Our":[93],"implementation":[94],"this":[96],"replaced":[99],"existing":[101],"used":[103],"by":[104],"OCaml":[106],"programming":[107],"language,":[108],"fragile":[110],"syntactic":[111],"criterion":[112],"which":[113],"let":[114],"several":[115],"subtle":[116],"bugs":[117],"slip":[118],"through":[119],"as":[120],"language":[122,138],"kept":[123],"evolving.":[124],"document":[126],"issues":[128],"arise":[130],"when":[131],"advanced":[132],"features":[133],"real-world":[136],"functional":[137],"(exceptions":[139],"first-class":[141],"modules,":[142],"GADTs,":[143],"etc.)":[144],"interact":[145],"safety":[147],"checking":[148],"for":[149],"definitions.":[151]},"counts_by_year":[{"year":2023,"cited_by_count":1},{"year":2022,"cited_by_count":1}],"updated_date":"2026-08-05T07:39:15.569665","created_date":"2025-10-10T00:00:00"}
