{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T17:24:17Z","timestamp":1787592257844,"version":"build-2736575974"},"reference-count":51,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA1","license":[{"start":{"date-parts":[[2025,4,9]],"date-time":"2025-04-09T00:00:00Z","timestamp":1744156800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/legalcode"}],"funder":[{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["GA 101039196"],"award-info":[{"award-number":["GA 101039196"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,4,9]]},"abstract":"<jats:p>\n                    We study\n                    <jats:italic toggle=\"yes\">row polymorphism<\/jats:italic>\n                    for records types in systems with set-theoretic types, specifically, union, intersection, and negation types. We consider record types that embed row variables and define a subtyping relation by interpreting record types into sets of record values, and row variables into sets of\n                    <jats:italic toggle=\"yes\">rows,<\/jats:italic>\n                    that is, \u201cchunks\u201d of record values where some record keys are left out: subtyping is then containment of the interpretations. We define a\n                    <jats:italic toggle=\"yes\">\u03bb<\/jats:italic>\n                    -calculus equipped with operations for field extension, selection, and deletion, its operational semantics, and a type system that we prove to be sound. We provide algorithms for deciding the typing and subtyping relations, and to decide whether two types can be instantiated to make one subtype of the other.\n                  <\/jats:p>\n                  <jats:p>This research is motivated by the current trend of defining static type systems for dynamic languages and, in our case, by an ongoing effort of endowing the Elixir programming language with a gradual type system.<\/jats:p>","DOI":"10.1145\/3720497","type":"journal-article","created":{"date-parts":[[2025,4,9]],"date-time":"2025-04-09T13:48:26Z","timestamp":1744206506000},"page":"1464-1491","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Polymorphic Records for Dynamic Languages"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0951-7535","authenticated-orcid":false,"given":"Giuseppe","family":"Castagna","sequence":"first","affiliation":[{"name":"CNRS - Universit\u00e9 Paris Cit\u00e9, Paris, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1398-7460","authenticated-orcid":false,"given":"Lo\u00efc","family":"Peyrot","sequence":"additional","affiliation":[{"name":"IMDEA Software Institute, Madrid, Spain"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,4,9]]},"reference":[{"key":"e_1_3_1_2_2","doi-asserted-by":"publisher","DOI":"10.4204\/eptcs.351.1"},{"key":"e_1_3_1_3_2","unstructured":"Ballerina. [n.d.]. Structural Typing. https:\/\/ballerina.io\/learn\/by-example\/structural-typing\/"},{"key":"e_1_3_1_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/944705.944711"},{"key":"e_1_3_1_5_2","doi-asserted-by":"publisher","DOI":"10.1017\/s0960129500000049"},{"key":"e_1_3_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/6041.6042"},{"key":"e_1_3_1_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/3607838"},{"key":"e_1_3_1_8_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-34518-0_12"},{"key":"e_1_3_1_9_2","unstructured":"Giuseppe Castagna and Guillaume Duboc. 2025. Guard Analysis and Safe Erasure Gradual Typing: a Type System for Elixir. arXiv:2408.14345 [cs.PL] https:\/\/arxiv.org\/abs\/2408.14345"},{"key":"e_1_3_1_10_2","doi-asserted-by":"publisher","DOI":"10.22152\/programming-journal.org\/2024\/8\/4"},{"key":"e_1_3_1_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/3632882"},{"key":"e_1_3_1_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/2676726.2676991"},{"key":"e_1_3_1_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/2535838.2535840"},{"key":"e_1_3_1_14_2","doi-asserted-by":"publisher","unstructured":"Giuseppe Castagna Tommaso Petrucciani and Kim Nguyen. 2016. Set-theoretic types for polymorphic variants. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. ACM. doi:10.1145\/2951913.2951928","DOI":"10.1145\/2951913.2951928"},{"key":"e_1_3_1_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/2034773.2034788"},{"key":"e_1_3_1_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/3093333.3009882"},{"key":"e_1_3_1_17_2","unstructured":"Elixir. 2012. Elixir Language. https:\/\/elixir-lang.org\/"},{"key":"e_1_3_1_18_2","unstructured":"Elixir. 2024. Elixir documentation: Gradual set-theoretic types. https:\/\/hexdocs.pm\/elixir\/gradual-set-theoretic-types.html"},{"key":"e_1_3_1_19_2","unstructured":"Elixir. 2024. Function add_elixir_domain in logger.ex module. Retrieved January 22 2024 from https:\/\/github.com\/elixir-lang\/elixir\/blob\/af2b21d67d4865313807e485e43d4e38a1676a54\/lib\/logger\/lib\/logger.ex#L940-L944"},{"key":"e_1_3_1_20_2","unstructured":"Facebook. 2015. Flow. https:\/\/flow.org\/"},{"key":"e_1_3_1_21_2","unstructured":"Phil Freeman. 2013. PureScript. https:\/\/www.purescript.org\/"},{"key":"e_1_3_1_22_2","volume-title":"Th\u00e9orie, conception et r\u00e9alisation d\u2019un langage de programmation adapt\u00e9 \u00e0XML. Ph.D. Dissertation","author":"Frisch Alain","year":"2004","unstructured":"Alain Frisch. 2004. Th\u00e9orie, conception et r\u00e9alisation d\u2019un langage de programmation adapt\u00e9 \u00e0XML. Ph.D. Dissertation. Universit\u00e9 Paris 7 - Denis Diderot."},{"key":"e_1_3_1_23_2","doi-asserted-by":"publisher","DOI":"10.1109\/LICS.2002.1029823"},{"key":"e_1_3_1_24_2","doi-asserted-by":"publisher","DOI":"10.1145\/1391289.1391293"},{"key":"e_1_3_1_25_2","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129513000066"},{"key":"e_1_3_1_26_2","unstructured":"Benedict R. Gaster and Mark P. Jones. 1996. A Polymorphic Type System for Extensible Records and Variants. Technical Report."},{"key":"e_1_3_1_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/2812805"},{"key":"e_1_3_1_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/99583.99603"},{"key":"e_1_3_1_29_2","doi-asserted-by":"publisher","unstructured":"Daniel Hillerstr\u00f6m and Sam Lindley. 2016. Liberating effects with rows and handlers. (9 2016). doi:10.1145\/2976022.2976033","DOI":"10.1145\/2976022.2976033"},{"key":"e_1_3_1_30_2","first-page":"5","article-title":"Further Thoughts on Record Handling","volume":"23","author":"Hoare C. A. R.","year":"1966","unstructured":"C. A. R. Hoare. 1966. Further Thoughts on Record Handling. ALGOL Bull. 23 (mar 1966), 5\u201311.","journal-title":"ALGOL Bull"},{"key":"e_1_3_1_31_2","unstructured":"C. A. R. Hoare. 1966. Record Handling. Lecture Notes NATO Summer School."},{"key":"e_1_3_1_32_2","unstructured":"Alan Jeffrey. 2022. Semantic Subtyping in Luau. Blog post. https:\/\/blog.roblox.com\/2022\/11\/semantic-subtyping-luau Accessed on May 6th 2023."},{"key":"e_1_3_1_33_2","unstructured":"Daan Leijen. 2005. Extensible Records with Scoped Labels. Revised Selected Papers from the Sixth Symposium on Trends in Fuctional Programming TFP 2005 (2005)."},{"key":"e_1_3_1_34_2","doi-asserted-by":"publisher","DOI":"10.4204\/eptcs.153.8"},{"key":"e_1_3_1_35_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-94-011-0834-8_5"},{"key":"e_1_3_1_36_2","unstructured":"Microsoft. 2012. TypeScript. https:\/\/www.typescriptlang.org\/"},{"key":"e_1_3_1_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/3290325"},{"key":"e_1_3_1_38_2","doi-asserted-by":"publisher","DOI":"10.1145\/218570.218572"},{"key":"e_1_3_1_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/3563304"},{"key":"e_1_3_1_40_2","doi-asserted-by":"publisher","DOI":"10.1145\/3609027.3609406"},{"key":"e_1_3_1_41_2","volume-title":"Polymorphic Set-Theoretic Types for Functional Languages. Ph. D. Dissertation","author":"Petrucciani Tommaso","year":"2019","unstructured":"Tommaso Petrucciani. 2019. Polymorphic Set-Theoretic Types for Functional Languages. Ph. D. Dissertation. Universit\u00e0 di Genova, Universit\u00e9 Paris Diderot."},{"key":"e_1_3_1_42_2","unstructured":"Roblox. 2021. Luau."},{"key":"e_1_3_1_43_2","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75284"},{"key":"e_1_3_1_44_2","first-page":"67","volume-title":"Type inference for records in natural extension of ML","author":"R\u00e9my Didier","year":"1994","unstructured":"Didier R\u00e9my. 1994. Type inference for records in natural extension of ML. MIT Press, Cambridge, MA, USA, 67\u201395."},{"key":"e_1_3_1_45_2","doi-asserted-by":"publisher","DOI":"10.1002\/(sici)1096-9942(1998)4:1<27::aid-tapo3>3.0.co;2-4"},{"key":"e_1_3_1_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/3587216.3587220"},{"key":"e_1_3_1_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/3622836"},{"key":"e_1_3_1_48_2","unstructured":"Types mailing list. 2019. What exactly should we call syntax-directed inference rules? http:\/\/lists.seas.upenn.edu\/pipermail\/types-list\/2019\/002138.html."},{"key":"e_1_3_1_49_2","unstructured":"Mitchell Wand. 1987. Complete Type Inference for Simple Objects. In Proceedings of the IEEE Symposium on Logic in Computer Science."},{"key":"e_1_3_1_50_2","doi-asserted-by":"publisher","DOI":"10.1016\/0890-5401(91)90050-c"},{"key":"e_1_3_1_51_2","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1994.1093"},{"key":"e_1_3_1_52_2","doi-asserted-by":"publisher","unstructured":"Ningning Xie Bruno C.d.S. Oliveira Xuan Bi and Tom Schrijvers. 2020. Row and Bounded Polymorphism via Disjoint Polymorphism. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik. doi:10.4230\/LIPICS.ECOOP.2020.27","DOI":"10.4230\/LIPICS.ECOOP.2020.27"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3720497","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3720497","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,8,24]],"date-time":"2026-08-24T16:28:39Z","timestamp":1787588919000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3720497"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,4,9]]},"references-count":51,"journal-issue":{"issue":"OOPSLA1","published-print":{"date-parts":[[2025,4,9]]}},"alternative-id":["10.1145\/3720497"],"URL":"https:\/\/doi.org\/10.1145\/3720497","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,4,9]]},"assertion":[{"value":"2024-10-15","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-02-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-04-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}