{"id":"https://openalex.org/W4396214415","doi":"https://doi.org/10.1145/3649836","title":"Persimmon: Nested Family Polymorphism with Extensible Variant Types","display_name":"Persimmon: Nested Family Polymorphism with Extensible Variant Types","publication_year":2024,"publication_date":"2024-04-29","ids":{"openalex":"https://openalex.org/W4396214415","doi":"https://doi.org/10.1145/3649836"},"language":"en","primary_location":{"id":"doi:10.1145/3649836","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3649836","pdf_url":null,"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":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://doi.org/10.1145/3649836","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5095926304","display_name":"Anastasiya Kravchuk-Kirilyuk","orcid":"https://orcid.org/0009-0001-0357-9690"},"institutions":[{"id":"https://openalex.org/I2801851002","display_name":"Harvard University Press","ror":"https://ror.org/006v7bf86","country_code":"US","type":"other","lineage":["https://openalex.org/I136199984","https://openalex.org/I2801851002"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Anastasiya Kravchuk-Kirilyuk","raw_affiliation_strings":["Harvard University, Cambridge, USA"],"raw_orcid":"https://orcid.org/0009-0001-0357-9690","affiliations":[{"raw_affiliation_string":"Harvard University, Cambridge, USA","institution_ids":["https://openalex.org/I2801851002"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5103271034","display_name":"Guozheng Feng","orcid":"https://orcid.org/0009-0006-0891-3041"},"institutions":[{"id":"https://openalex.org/I151746483","display_name":"University of Waterloo","ror":"https://ror.org/01aff2v68","country_code":"CA","type":"education","lineage":["https://openalex.org/I151746483"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Gary Feng","raw_affiliation_strings":["University of Waterloo, Waterloo, Canada"],"raw_orcid":"https://orcid.org/0009-0006-0891-3041","affiliations":[{"raw_affiliation_string":"University of Waterloo, Waterloo, Canada","institution_ids":["https://openalex.org/I151746483"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5048494148","display_name":"Jonas Iskander","orcid":"https://orcid.org/0000-0003-3181-1407"},"institutions":[{"id":"https://openalex.org/I2801851002","display_name":"Harvard University Press","ror":"https://ror.org/006v7bf86","country_code":"US","type":"other","lineage":["https://openalex.org/I136199984","https://openalex.org/I2801851002"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Jonas Iskander","raw_affiliation_strings":["Harvard University, Cambridge, USA"],"raw_orcid":"https://orcid.org/0000-0003-3181-1407","affiliations":[{"raw_affiliation_string":"Harvard University, Cambridge, USA","institution_ids":["https://openalex.org/I2801851002"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5100643391","display_name":"Yizhou Zhang","orcid":"https://orcid.org/0000-0002-8206-4694"},"institutions":[{"id":"https://openalex.org/I151746483","display_name":"University of Waterloo","ror":"https://ror.org/01aff2v68","country_code":"CA","type":"education","lineage":["https://openalex.org/I151746483"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Yizhou Zhang","raw_affiliation_strings":["University of Waterloo, Waterloo, Canada"],"raw_orcid":"https://orcid.org/0000-0002-8206-4694","affiliations":[{"raw_affiliation_string":"University of Waterloo, Waterloo, Canada","institution_ids":["https://openalex.org/I151746483"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5054275386","display_name":"Nada Amin","orcid":"https://orcid.org/0000-0002-0830-7248"},"institutions":[{"id":"https://openalex.org/I2801851002","display_name":"Harvard University Press","ror":"https://ror.org/006v7bf86","country_code":"US","type":"other","lineage":["https://openalex.org/I136199984","https://openalex.org/I2801851002"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Nada Amin","raw_affiliation_strings":["Harvard University, Cambridge, USA"],"raw_orcid":"https://orcid.org/0000-0002-0830-7248","affiliations":[{"raw_affiliation_string":"Harvard University, Cambridge, USA","institution_ids":["https://openalex.org/I2801851002"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.5395,"has_fulltext":false,"cited_by_count":3,"citation_normalized_percentile":{"value":0.56414963,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":96,"max":97},"biblio":{"volume":"8","issue":"OOPSLA1","first_page":"698","last_page":"724"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T13124","display_name":"Chemical synthesis and alkaloids","score":0.9681000113487244,"subfield":{"id":"https://openalex.org/subfields/1605","display_name":"Organic Chemistry"},"field":{"id":"https://openalex.org/fields/16","display_name":"Chemistry"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T13124","display_name":"Chemical synthesis and alkaloids","score":0.9681000113487244,"subfield":{"id":"https://openalex.org/subfields/1605","display_name":"Organic Chemistry"},"field":{"id":"https://openalex.org/fields/16","display_name":"Chemistry"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T12596","display_name":"Cephalopods and Marine Biology","score":0.9363999962806702,"subfield":{"id":"https://openalex.org/subfields/1105","display_name":"Ecology, Evolution, Behavior and Systematics"},"field":{"id":"https://openalex.org/fields/11","display_name":"Agricultural and Biological Sciences"},"domain":{"id":"https://openalex.org/domains/1","display_name":"Life Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9038000106811523,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/polymorphism","display_name":"Polymorphism (computer science)","score":0.5188518762588501},{"id":"https://openalex.org/keywords/extensibility","display_name":"Extensibility","score":0.4306586682796478},{"id":"https://openalex.org/keywords/nested-set-model","display_name":"Nested set model","score":0.4124959707260132},{"id":"https://openalex.org/keywords/genetics","display_name":"Genetics","score":0.3732014298439026},{"id":"https://openalex.org/keywords/biology","display_name":"Biology","score":0.33877769112586975},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.2816426753997803},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.16350844502449036},{"id":"https://openalex.org/keywords/genotype","display_name":"Genotype","score":0.14994433522224426},{"id":"https://openalex.org/keywords/gene","display_name":"Gene","score":0.04349842667579651}],"concepts":[{"id":"https://openalex.org/C149737253","wikidata":"https://www.wikidata.org/wiki/Q3240252","display_name":"Polymorphism (computer science)","level":4,"score":0.5188518762588501},{"id":"https://openalex.org/C32833848","wikidata":"https://www.wikidata.org/wiki/Q4115054","display_name":"Extensibility","level":2,"score":0.4306586682796478},{"id":"https://openalex.org/C103000020","wikidata":"https://www.wikidata.org/wiki/Q1978426","display_name":"Nested set model","level":3,"score":0.4124959707260132},{"id":"https://openalex.org/C54355233","wikidata":"https://www.wikidata.org/wiki/Q7162","display_name":"Genetics","level":1,"score":0.3732014298439026},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.33877769112586975},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.2816426753997803},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.16350844502449036},{"id":"https://openalex.org/C135763542","wikidata":"https://www.wikidata.org/wiki/Q106016","display_name":"Genotype","level":3,"score":0.14994433522224426},{"id":"https://openalex.org/C104317684","wikidata":"https://www.wikidata.org/wiki/Q7187","display_name":"Gene","level":2,"score":0.04349842667579651},{"id":"https://openalex.org/C510870499","wikidata":"https://www.wikidata.org/wiki/Q47607","display_name":"SQL","level":2,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3649836","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3649836","pdf_url":null,"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"}],"best_oa_location":{"id":"doi:10.1145/3649836","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3649836","pdf_url":null,"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":false,"pdf":false},"content_urls":null,"referenced_works_count":27,"referenced_works":["https://openalex.org/W1649645444","https://openalex.org/W1758754314","https://openalex.org/W1811907079","https://openalex.org/W2057779758","https://openalex.org/W2063553958","https://openalex.org/W2108025710","https://openalex.org/W2108556267","https://openalex.org/W2109795737","https://openalex.org/W2110122404","https://openalex.org/W2121787849","https://openalex.org/W2123092976","https://openalex.org/W2126234902","https://openalex.org/W2135785452","https://openalex.org/W2138964563","https://openalex.org/W2150101804","https://openalex.org/W2172232818","https://openalex.org/W2281310552","https://openalex.org/W2760963892","https://openalex.org/W2951317485","https://openalex.org/W3011926417","https://openalex.org/W3101460145","https://openalex.org/W4206669215","https://openalex.org/W4206708621","https://openalex.org/W4254538683","https://openalex.org/W4379536897","https://openalex.org/W6947905342","https://openalex.org/W6967176668"],"related_works":["https://openalex.org/W4391375266","https://openalex.org/W2082860237","https://openalex.org/W2119695867","https://openalex.org/W2130076355","https://openalex.org/W1990804418","https://openalex.org/W1993764875","https://openalex.org/W2046158694","https://openalex.org/W2788277189","https://openalex.org/W2013243191","https://openalex.org/W1971568933"],"abstract_inverted_index":{"Many":[0],"obstacles":[1],"stand":[2],"in":[3,28,89],"the":[4,29,49,99,111,167],"way":[5,64],"of":[6,31,36,169],"modular,":[7],"extensible":[8,80,84,107,150],"code.":[9,108],"Some":[10],"language":[11,91,148],"constructs,":[12],"such":[13],"as":[14],"pattern":[15,85],"matching,":[16],"are":[17,92],"not":[18,24],"easily":[19],"extensible.":[20],"Inherited":[21],"code":[22,50,66],"may":[23],"be":[25,143],"type":[26],"safe":[27],"presence":[30],"extended":[32],"types.":[33],"The":[34],"burden":[35,104],"setting":[37],"up":[38],"design":[39],"patterns":[40],"can":[41,47,128,142],"discourage":[42],"users,":[43],"and":[44,83,102,171],"parameter":[45,100],"clutter":[46,101],"make":[48],"less":[51],"readable.":[52],"Given":[53],"these":[54],"challenges,":[55],"it":[56],"is":[57,163],"no":[58],"wonder":[59],"that":[60,160],"extensibility":[61,119],"often":[62],"gives":[63],"to":[65,155],"duplication.":[67],"We":[68,138],"present":[69],"our":[70,90,153,161],"solution:":[71],"Persimmon,":[72],"a":[73,121,146],"functional":[74,147],"system":[75,162],"with":[76,106,152],"nested":[77,114,125],"family":[78,126],"polymorphism,":[79],"variant":[81],"types,":[82],"matching.":[86],"Most":[87],"constructs":[88],"built-in":[93],"\"extensibility":[94],"hooks,\"":[95],"cutting":[96],"down":[97],"on":[98],"user":[103],"associated":[105],"Persimmon":[109,132,141],"preserves":[110],"relationships":[112],"between":[113],"families":[115],"upon":[116],"inheritance,":[117],"enabling":[118],"at":[120],"large":[122],"scale.":[123],"Since":[124],"polymorphism":[127],"express":[129],"composable":[130],"extensions,":[131],"supports":[133],"mixins":[134],"via":[135],"an":[136],"encoding.":[137],"show":[139,159],"how":[140],"compiled":[144],"into":[145],"without":[149],"variants":[151],"translation":[154],"Scala.":[156],"Finally,":[157],"we":[158],"sound":[164],"by":[165],"proving":[166],"properties":[168],"progress":[170],"preservation.":[172]},"counts_by_year":[{"year":2025,"cited_by_count":3}],"updated_date":"2026-08-18T07:49:30.821534","created_date":"2025-10-10T00:00:00"}
