{"id":"https://openalex.org/W2766220735","doi":"https://doi.org/10.1145/3158093","title":"Linear Haskell: practical linearity in a higher-order polymorphic language","display_name":"Linear Haskell: practical linearity in a higher-order polymorphic language","publication_year":2017,"publication_date":"2017-12-27","ids":{"openalex":"https://openalex.org/W2766220735","doi":"https://doi.org/10.1145/3158093","mag":"2766220735"},"language":"en","primary_location":{"id":"doi:10.1145/3158093","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3158093","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3158093?download=true","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"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":null,"license_id":null,"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"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3158093?download=true","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Jean-Philippe Bernardy","orcid":null},"institutions":[{"id":"https://openalex.org/I881427289","display_name":"University of Gothenburg","ror":"https://ror.org/01tm6cn81","country_code":"SE","type":"education","lineage":["https://openalex.org/I881427289"]}],"countries":["SE"],"is_corresponding":false,"raw_author_name":"Jean-Philippe Bernardy","raw_affiliation_strings":["University of Gothenburg, Sweden"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Gothenburg, Sweden","institution_ids":["https://openalex.org/I881427289"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Mathieu Boespflug","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Mathieu Boespflug","raw_affiliation_strings":["Tweag I/O, France"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Tweag I/O, France","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Ryan R. Newton","orcid":null},"institutions":[{"id":"https://openalex.org/I592451","display_name":"Indiana University","ror":"https://ror.org/01kg8sb98","country_code":"US","type":"education","lineage":["https://openalex.org/I592451"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Ryan R. Newton","raw_affiliation_strings":["Indiana University, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Indiana University, USA","institution_ids":["https://openalex.org/I592451"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Simon Peyton Jones","orcid":null},"institutions":[{"id":"https://openalex.org/I4210164937","display_name":"Microsoft Research (United Kingdom)","ror":"https://ror.org/05k87vq12","country_code":"GB","type":"company","lineage":["https://openalex.org/I1290206253","https://openalex.org/I4210164937"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Simon Peyton Jones","raw_affiliation_strings":["Microsoft Research, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Microsoft Research, UK","institution_ids":["https://openalex.org/I4210164937"]}]},{"author_position":"last","author":{"id":null,"display_name":"Arnaud Spiwack","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Arnaud Spiwack","raw_affiliation_strings":["Tweag I/O, France"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Tweag I/O, France","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":3,"institutions_distinct_count":5,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":3.7177,"has_fulltext":true,"cited_by_count":83,"citation_normalized_percentile":{"value":0.94689722,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":96,"max":100},"biblio":{"volume":"2","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.9473000168800354,"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.9473000168800354,"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.01590000092983246,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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.008999999612569809,"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/linearity","display_name":"Linearity","score":0.7269999980926514},{"id":"https://openalex.org/keywords/linear-system","display_name":"Linear system","score":0.6134999990463257},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.5249000191688538},{"id":"https://openalex.org/keywords/type","display_name":"Type (biology)","score":0.5110999941825867},{"id":"https://openalex.org/keywords/linear-programming","display_name":"Linear programming","score":0.4876999855041504},{"id":"https://openalex.org/keywords/path","display_name":"Path (computing)","score":0.4023999869823456},{"id":"https://openalex.org/keywords/dependent-type","display_name":"Dependent type","score":0.39239999651908875},{"id":"https://openalex.org/keywords/reuse","display_name":"Reuse","score":0.37369999289512634}],"concepts":[{"id":"https://openalex.org/C77170095","wikidata":"https://www.wikidata.org/wiki/Q1753188","display_name":"Linearity","level":2,"score":0.7269999980926514},{"id":"https://openalex.org/C6802819","wikidata":"https://www.wikidata.org/wiki/Q1072174","display_name":"Linear system","level":2,"score":0.6134999990463257},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.5644999742507935},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.5249000191688538},{"id":"https://openalex.org/C2777299769","wikidata":"https://www.wikidata.org/wiki/Q3707858","display_name":"Type (biology)","level":2,"score":0.5110999941825867},{"id":"https://openalex.org/C41045048","wikidata":"https://www.wikidata.org/wiki/Q202843","display_name":"Linear programming","level":2,"score":0.4876999855041504},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.47600001096725464},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.4115000069141388},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4025000035762787},{"id":"https://openalex.org/C2777735758","wikidata":"https://www.wikidata.org/wiki/Q817765","display_name":"Path (computing)","level":2,"score":0.4023999869823456},{"id":"https://openalex.org/C20528804","wikidata":"https://www.wikidata.org/wiki/Q997433","display_name":"Dependent type","level":3,"score":0.39239999651908875},{"id":"https://openalex.org/C206588197","wikidata":"https://www.wikidata.org/wiki/Q846574","display_name":"Reuse","level":2,"score":0.37369999289512634},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.3490000069141388},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.33239999413490295},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.32339999079704285},{"id":"https://openalex.org/C45347329","wikidata":"https://www.wikidata.org/wiki/Q5166604","display_name":"Convolution (computer science)","level":3,"score":0.3091000020503998},{"id":"https://openalex.org/C28077239","wikidata":"https://www.wikidata.org/wiki/Q841728","display_name":"Linear logic","level":2,"score":0.3086000084877014},{"id":"https://openalex.org/C138958017","wikidata":"https://www.wikidata.org/wiki/Q190087","display_name":"Data type","level":2,"score":0.2994000017642975},{"id":"https://openalex.org/C171836373","wikidata":"https://www.wikidata.org/wiki/Q2266329","display_name":"Linear interpolation","level":3,"score":0.2883000075817108},{"id":"https://openalex.org/C49766605","wikidata":"https://www.wikidata.org/wiki/Q207643","display_name":"Linear map","level":2,"score":0.2874000072479248},{"id":"https://openalex.org/C139722471","wikidata":"https://www.wikidata.org/wiki/Q2619517","display_name":"Linear filter","level":3,"score":0.2736999988555908},{"id":"https://openalex.org/C163175372","wikidata":"https://www.wikidata.org/wiki/Q3339222","display_name":"Linear model","level":2,"score":0.2669999897480011},{"id":"https://openalex.org/C176217482","wikidata":"https://www.wikidata.org/wiki/Q860554","display_name":"Metric (unit)","level":2,"score":0.2554999887943268},{"id":"https://openalex.org/C311688","wikidata":"https://www.wikidata.org/wiki/Q2393193","display_name":"Time complexity","level":2,"score":0.25279998779296875}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.1145/3158093","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3158093","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3158093?download=true","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"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":null,"license_id":null,"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:1710.09756","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1710.09756","pdf_url":"https://arxiv.org/pdf/1710.09756","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"},{"id":"pmh:oai:HAL:hal-01673536v1","is_oa":true,"landing_page_url":"https://hal.science/hal-01673536","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":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Proceedings of the ACM on Programming Languages, 2017, 2 (POPL), pp.1-29. &#x27E8;10.1145/3158093&#x27E9;","raw_type":"Journal articles"}],"best_oa_location":{"id":"doi:10.1145/3158093","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3158093","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3158093?download=true","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"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":null,"license_id":null,"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":[{"id":"https://openalex.org/G2291942135","display_name":null,"funder_award_id":"2014-39","funder_id":"https://openalex.org/F4320322581","funder_display_name":"Vetenskapsr\u00e5det"},{"id":"https://openalex.org/G2569649914","display_name":null,"funder_award_id":"671500","funder_id":"https://openalex.org/F4320320300","funder_display_name":"European Commission"},{"id":"https://openalex.org/G8819257444","display_name":null,"funder_award_id":"671500","funder_id":"https://openalex.org/F4320338335","funder_display_name":"H2020 European Research Council"}],"funders":[{"id":"https://openalex.org/F4320320300","display_name":"European Commission","ror":"https://ror.org/00k4n6c32"},{"id":"https://openalex.org/F4320322581","display_name":"Vetenskapsr\u00e5det","ror":"https://ror.org/03zttf063"},{"id":"https://openalex.org/F4320323421","display_name":"G\u00f6teborgs Universitet","ror":"https://ror.org/01tm6cn81"},{"id":"https://openalex.org/F4320338335","display_name":"H2020 European Research Council","ror":"https://ror.org/0472cxd90"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2766220735.pdf","grobid_xml":"https://content.openalex.org/works/W2766220735.grobid-xml"},"referenced_works_count":28,"referenced_works":["https://openalex.org/W15833160","https://openalex.org/W111511002","https://openalex.org/W1491698270","https://openalex.org/W1529441891","https://openalex.org/W1830196027","https://openalex.org/W1971591193","https://openalex.org/W2004843654","https://openalex.org/W2064189713","https://openalex.org/W2070324762","https://openalex.org/W2074674709","https://openalex.org/W2084861262","https://openalex.org/W2125690388","https://openalex.org/W2145029935","https://openalex.org/W2145108549","https://openalex.org/W2161616972","https://openalex.org/W2195119025","https://openalex.org/W2484189767","https://openalex.org/W2509359333","https://openalex.org/W2510433231","https://openalex.org/W2563592207","https://openalex.org/W2728247669","https://openalex.org/W2734797515","https://openalex.org/W2735673197","https://openalex.org/W2751791540","https://openalex.org/W2799182172","https://openalex.org/W2911865844","https://openalex.org/W4234739870","https://openalex.org/W4241006348"],"related_works":["https://openalex.org/W1671914757","https://openalex.org/W1601811574","https://openalex.org/W159637158","https://openalex.org/W2047292526","https://openalex.org/W1556401754","https://openalex.org/W1573172013","https://openalex.org/W4246781209","https://openalex.org/W1798975336","https://openalex.org/W4243145104","https://openalex.org/W1858542669"],"abstract_inverted_index":{"Linear":[0,82],"type":[1,32,105,136],"systems":[2],"have":[3],"a":[4,11,30,51],"long":[5],"and":[6,42,47,71,120,144,158],"storied":[7],"history,":[8],"but":[9,90],"not":[10],"clear":[12],"path":[13],"forward":[14],"to":[15,78,126],"integrate":[16],"with":[17,35,129,155],"existing":[18,117],"languages":[19],"such":[20],"as":[21],"OCaml":[22],"or":[23],"Haskell.":[24],"In":[25],"this":[26],"paper,":[27],"we":[28,74,133],"study":[29],"linear":[31,46,59,70,104,130,151],"system":[33,106,137],"designed":[34],"two":[36,146],"crucial":[37],"properties":[38],"in":[39,115,138,161],"mind:":[40],"backwards-compatibility":[41],"code":[43],"reuse":[44],"across":[45],"non-linear":[48,72],"users":[49],"of":[50,58,102,148,150],"library.":[52],"Only":[53],"then":[54],"can":[55,84,91,112],"the":[56,100,140],"benefits":[57],"types":[60,68,131],"permeate":[61],"conventional":[62],"functional":[63],"programming.":[64],"Rather":[65],"than":[66],"bifurcate":[67],"into":[69],"counterparts,":[73],"instead":[75],"attach":[76],"linearity":[77],"function":[79],"arrows":[80],".":[81],"functions":[83],"receive":[85],"inputs":[86],"from":[87],"linearly-bound":[88],"values,":[89],"also":[92],"operate":[93],"over":[94],"unrestricted,":[95],"regular":[96],"values.":[97],"To":[98],"demonstrate":[99,145],"efficacy":[101],"our":[103,135],"\u2014":[107,132],"both":[108],"how":[109,121],"easy":[110],"it":[111,123,125],"be":[113],"integrated":[114],"an":[116],"language":[118],"implementation":[119],"streamlined":[122],"makes":[124],"write":[127],"programs":[128],"implemented":[134],"ghc,":[139],"leading":[141],"Haskell":[142],"compiler,":[143],"kinds":[147],"applications":[149],"types:":[152],"mutable":[153],"data":[154],"pure":[156],"interfaces;":[157],"enforcing":[159],"protocols":[160],"I/O-performing":[162],"functions.":[163]},"counts_by_year":[{"year":2026,"cited_by_count":2},{"year":2025,"cited_by_count":9},{"year":2024,"cited_by_count":16},{"year":2023,"cited_by_count":14},{"year":2022,"cited_by_count":10},{"year":2021,"cited_by_count":14},{"year":2020,"cited_by_count":6},{"year":2019,"cited_by_count":9},{"year":2018,"cited_by_count":3}],"updated_date":"2026-06-11T09:08:48.828518","created_date":"2017-11-10T00:00:00"}
