{"id":"https://openalex.org/W2152006556","doi":"https://doi.org/10.1145/2804302.2804320","title":"Variations on variants","display_name":"Variations on variants","publication_year":2015,"publication_date":"2015-08-24","ids":{"openalex":"https://openalex.org/W2152006556","doi":"https://doi.org/10.1145/2804302.2804320","mag":"2152006556"},"language":"en","primary_location":{"id":"doi:10.1145/2804302.2804320","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2804302.2804320","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN Symposium on Haskell","raw_type":"proceedings-article"},"type":"preprint","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://arxiv.org/pdf/1612.08203","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5067671067","display_name":"J. Garrett Morris","orcid":"https://orcid.org/0000-0002-3992-1080"},"institutions":[{"id":"https://openalex.org/I98677209","display_name":"University of Edinburgh","ror":"https://ror.org/01nrxwf90","country_code":"GB","type":"education","lineage":["https://openalex.org/I98677209"]}],"countries":["GB"],"is_corresponding":true,"raw_author_name":"J. Garrett Morris","raw_affiliation_strings":["University of Edinburgh, UK"],"affiliations":[{"raw_affiliation_string":"University of Edinburgh, UK","institution_ids":["https://openalex.org/I98677209"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5067671067"],"corresponding_institution_ids":["https://openalex.org/I98677209"],"apc_list":null,"apc_paid":null,"fwci":1.3345,"has_fulltext":false,"cited_by_count":7,"citation_normalized_percentile":{"value":0.86387502,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":96},"biblio":{"volume":null,"issue":null,"first_page":"71","last_page":"81"},"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.9990000128746033,"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.9990000128746033,"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/T11424","display_name":"Security and Verification in Computing","score":0.9922999739646912,"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/T10260","display_name":"Software Engineering Research","score":0.9904999732971191,"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/haskell","display_name":"Haskell","score":0.8807555437088013},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.825563907623291},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6563687920570374},{"id":"https://openalex.org/keywords/extensibility","display_name":"Extensibility","score":0.6311501264572144},{"id":"https://openalex.org/keywords/data-type","display_name":"Data type","score":0.6187664866447449},{"id":"https://openalex.org/keywords/encode","display_name":"ENCODE","score":0.6145469546318054},{"id":"https://openalex.org/keywords/modularity","display_name":"Modularity (biology)","score":0.5531326532363892},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.5500723719596863},{"id":"https://openalex.org/keywords/extension","display_name":"Extension (predicate logic)","score":0.5313765406608582},{"id":"https://openalex.org/keywords/class","display_name":"Class (philosophy)","score":0.4998753070831299},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.49306532740592957},{"id":"https://openalex.org/keywords/type","display_name":"Type (biology)","score":0.4708033800125122},{"id":"https://openalex.org/keywords/generic-programming","display_name":"Generic programming","score":0.4392312169075012},{"id":"https://openalex.org/keywords/encoding","display_name":"Encoding (memory)","score":0.4266393184661865},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.23483702540397644}],"concepts":[{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.8807555437088013},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.825563907623291},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6563687920570374},{"id":"https://openalex.org/C32833848","wikidata":"https://www.wikidata.org/wiki/Q4115054","display_name":"Extensibility","level":2,"score":0.6311501264572144},{"id":"https://openalex.org/C138958017","wikidata":"https://www.wikidata.org/wiki/Q190087","display_name":"Data type","level":2,"score":0.6187664866447449},{"id":"https://openalex.org/C66746571","wikidata":"https://www.wikidata.org/wiki/Q1134833","display_name":"ENCODE","level":3,"score":0.6145469546318054},{"id":"https://openalex.org/C2779478453","wikidata":"https://www.wikidata.org/wiki/Q6889748","display_name":"Modularity (biology)","level":2,"score":0.5531326532363892},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.5500723719596863},{"id":"https://openalex.org/C2778029271","wikidata":"https://www.wikidata.org/wiki/Q5421931","display_name":"Extension (predicate logic)","level":2,"score":0.5313765406608582},{"id":"https://openalex.org/C2777212361","wikidata":"https://www.wikidata.org/wiki/Q5127848","display_name":"Class (philosophy)","level":2,"score":0.4998753070831299},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.49306532740592957},{"id":"https://openalex.org/C2777299769","wikidata":"https://www.wikidata.org/wiki/Q3707858","display_name":"Type (biology)","level":2,"score":0.4708033800125122},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.4392312169075012},{"id":"https://openalex.org/C125411270","wikidata":"https://www.wikidata.org/wiki/Q18653","display_name":"Encoding (memory)","level":2,"score":0.4266393184661865},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.23483702540397644},{"id":"https://openalex.org/C54355233","wikidata":"https://www.wikidata.org/wiki/Q7162","display_name":"Genetics","level":1,"score":0.0},{"id":"https://openalex.org/C185592680","wikidata":"https://www.wikidata.org/wiki/Q2329","display_name":"Chemistry","level":0,"score":0.0},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C18903297","wikidata":"https://www.wikidata.org/wiki/Q7150","display_name":"Ecology","level":1,"score":0.0},{"id":"https://openalex.org/C55493867","wikidata":"https://www.wikidata.org/wiki/Q7094","display_name":"Biochemistry","level":1,"score":0.0},{"id":"https://openalex.org/C104317684","wikidata":"https://www.wikidata.org/wiki/Q7187","display_name":"Gene","level":2,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/2804302.2804320","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2804302.2804320","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN Symposium on Haskell","raw_type":"proceedings-article"},{"id":"pmh:oai:arXiv.org:1612.08203","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1612.08203","pdf_url":"https://arxiv.org/pdf/1612.08203","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"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"}],"best_oa_location":{"id":"pmh:oai:arXiv.org:1612.08203","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1612.08203","pdf_url":"https://arxiv.org/pdf/1612.08203","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"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"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G1798638720","display_name":"From Data Types to Session Types---A Basis for Concurrency and Distribution","funder_award_id":"EP/K034413/1","funder_id":"https://openalex.org/F4320334627","funder_display_name":"Engineering and Physical Sciences Research Council"},{"id":"https://openalex.org/G7918631928","display_name":null,"funder_award_id":"EP/K034413/1","funder_id":"https://openalex.org/F4320334627","funder_display_name":"Engineering and Physical Sciences Research Council"}],"funders":[{"id":"https://openalex.org/F4320334627","display_name":"Engineering and Physical Sciences Research Council","ror":"https://ror.org/0439y7842"}],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":22,"referenced_works":["https://openalex.org/W202283534","https://openalex.org/W1485257692","https://openalex.org/W1549804464","https://openalex.org/W1556536463","https://openalex.org/W1594279870","https://openalex.org/W2015617966","https://openalex.org/W2058162377","https://openalex.org/W2091470061","https://openalex.org/W2109518186","https://openalex.org/W2121038016","https://openalex.org/W2121787849","https://openalex.org/W2129533663","https://openalex.org/W2129777450","https://openalex.org/W2131067178","https://openalex.org/W2131653740","https://openalex.org/W2141576692","https://openalex.org/W2143823533","https://openalex.org/W2163552400","https://openalex.org/W4231010649","https://openalex.org/W4237607926","https://openalex.org/W4245292236","https://openalex.org/W4250362243"],"related_works":["https://openalex.org/W1564538666","https://openalex.org/W2526970984","https://openalex.org/W1688372159","https://openalex.org/W1528956417","https://openalex.org/W2493130382","https://openalex.org/W2145738007","https://openalex.org/W2112263414","https://openalex.org/W2971609332","https://openalex.org/W2110095505","https://openalex.org/W2779713464"],"abstract_inverted_index":{"Extensible":[0],"variants":[1,50,84,100],"improve":[2],"the":[3,108,122,153,176,181,225,237,248,258],"modularity":[4],"and":[5,20,35,64,158,189,224,266],"expressiveness":[6,182],"of":[7,24,31,72,87,98,107,115,124,148,155,183,250],"programming":[8],"languages:":[9],"they":[10,174],"allow":[11,21],"program":[12],"functionality":[13],"to":[14,47,81,140,213,246],"be":[15],"decomposed":[16],"into":[17],"independent":[18],"blocks,":[19],"seamless":[22],"extension":[23,71,106],"existing":[25,32,88,146],"code":[26],"with":[27,167,186,190],"both":[28,207],"new":[29,36,126],"cases":[30],"data":[33,40],"types":[34,234],"operations":[37],"over":[38],"those":[39],"types.":[41,195],"This":[42],"paper":[43],"considers":[44],"three":[45],"approaches":[46],"providing":[48],"extensible":[49,62,83,99,116],"in":[51,85,161,204,216,220,232,263],"Haskell.":[52],"Row":[53],"typing":[54,61,217],"is":[55,171],"a":[56,104,125,243],"long":[57],"understood":[58],"mechanism":[59,245],"for":[60,129,260],"records":[63],"variants,":[65,117],"but":[66],"its":[67],"adoption":[68],"would":[69],"require":[70,121,209],"Haskell's":[73],"core":[74],"type":[75,92,127,143,163,211,222,226,252,261],"system.":[76,110,178],"Alternatively,":[77],"we":[78,136],"might":[79],"hope":[80],"encode":[82],"terms":[86,201],"mechanisms,":[89],"such":[90],"as":[91],"classes.":[93],"We":[94,179,196,241],"describe":[95],"an":[96,145],"encoding":[97,139],"using":[101],"instance":[102,238],"chains,":[103],"proposed":[105],"class":[109,128],"Unlike":[111],"many":[112],"previous":[113],"encodings":[114,168,185,208],"ours":[118,170],"does":[119,236],"not":[120,218],"definition":[123],"each":[130,187,205],"function":[131],"that":[132,255],"consumes":[133],"variants.":[134],"Finally,":[135],"translate":[137],"our":[138,184,264],"use":[141],"closed":[142,162],"families,":[144],"feature":[147],"GHC.":[149],"Doing":[150],"so":[151],"demonstrates":[152],"interpretation":[154],"instances":[156],"chains":[157],"functional":[159],"dependencies":[160],"families.":[164],"One":[165],"concern":[166],"like":[169],"how":[172],"completely":[173],"match":[175],"encoded":[177],"compare":[180],"other":[188],"systems":[191],"based":[192],"on":[193],"row":[194,221],"find":[197],"that,":[198],"while":[199],"equivalent":[200],"are":[202],"typable":[203],"system,":[206],"explicit":[210],"annotations":[212,262],"resolve":[214],"ambiguities":[215],"present":[219],"systems,":[223],"family":[227],"implementation":[228],"retains":[229],"more":[230],"constraints":[231],"principal":[233],"than":[235],"chain":[239],"implementation.":[240],"propose":[242],"general":[244],"guide":[247],"instantiation":[249],"ambiguous":[251],"variables,":[253],"show":[254],"it":[256,271],"eliminates":[257],"need":[259],"encodings,":[265],"discuss":[267],"conditions":[268],"under":[269],"which":[270],"preserves":[272],"coherence.":[273]},"counts_by_year":[{"year":2023,"cited_by_count":1},{"year":2022,"cited_by_count":1},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":1},{"year":2017,"cited_by_count":2},{"year":2016,"cited_by_count":1}],"updated_date":"2026-04-04T16:13:02.066488","created_date":"2025-10-10T00:00:00"}
