{"id":"https://openalex.org/W4401603074","doi":"https://doi.org/10.1145/3674638","title":"Beyond Trees: Calculating Graph-Based Compilers (Functional Pearl)","display_name":"Beyond Trees: Calculating Graph-Based Compilers (Functional Pearl)","publication_year":2024,"publication_date":"2024-08-15","ids":{"openalex":"https://openalex.org/W4401603074","doi":"https://doi.org/10.1145/3674638"},"language":"en","primary_location":{"id":"doi:10.1145/3674638","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3674638","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/3674638","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5015853763","display_name":"Patrick Bahr","orcid":"https://orcid.org/0000-0003-1600-8261"},"institutions":[{"id":"https://openalex.org/I83467386","display_name":"IT University of Copenhagen","ror":"https://ror.org/02309jg23","country_code":"DK","type":"education","lineage":["https://openalex.org/I83467386"]}],"countries":["DK"],"is_corresponding":true,"raw_author_name":"Patrick Bahr","raw_affiliation_strings":["IT University of Copenhagen, Copenhagen, Denmark"],"affiliations":[{"raw_affiliation_string":"IT University of Copenhagen, Copenhagen, Denmark","institution_ids":["https://openalex.org/I83467386"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5069634739","display_name":"Graham Hutton","orcid":"https://orcid.org/0000-0001-9584-5150"},"institutions":[{"id":"https://openalex.org/I142263535","display_name":"University of Nottingham","ror":"https://ror.org/01ee9ar58","country_code":"GB","type":"education","lineage":["https://openalex.org/I142263535"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Graham Hutton","raw_affiliation_strings":["University of Nottingham, Nottingham, United Kingdom"],"affiliations":[{"raw_affiliation_string":"University of Nottingham, Nottingham, United Kingdom","institution_ids":["https://openalex.org/I142263535"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5015853763"],"corresponding_institution_ids":["https://openalex.org/I83467386"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":true,"cited_by_count":0,"citation_normalized_percentile":{"value":0.12545341,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":"8","issue":"ICFP","first_page":"370","last_page":"394"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9986000061035156,"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"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9986000061035156,"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9950000047683716,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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.9939000010490417,"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/compiler","display_name":"Compiler","score":0.8575992584228516},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8335546851158142},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6450144052505493},{"id":"https://openalex.org/keywords/correctness","display_name":"Correctness","score":0.6374716758728027},{"id":"https://openalex.org/keywords/graph","display_name":"Graph","score":0.5330468416213989},{"id":"https://openalex.org/keywords/abstract-syntax","display_name":"Abstract syntax","score":0.5137234926223755},{"id":"https://openalex.org/keywords/control-flow-graph","display_name":"Control flow graph","score":0.46783438324928284},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4296053349971771},{"id":"https://openalex.org/keywords/control-flow","display_name":"Control flow","score":0.4208982586860657},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.10013291239738464}],"concepts":[{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.8575992584228516},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8335546851158142},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6450144052505493},{"id":"https://openalex.org/C55439883","wikidata":"https://www.wikidata.org/wiki/Q360812","display_name":"Correctness","level":2,"score":0.6374716758728027},{"id":"https://openalex.org/C132525143","wikidata":"https://www.wikidata.org/wiki/Q141488","display_name":"Graph","level":2,"score":0.5330468416213989},{"id":"https://openalex.org/C114408938","wikidata":"https://www.wikidata.org/wiki/Q333373","display_name":"Abstract syntax","level":3,"score":0.5137234926223755},{"id":"https://openalex.org/C27458966","wikidata":"https://www.wikidata.org/wiki/Q1187693","display_name":"Control flow graph","level":2,"score":0.46783438324928284},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4296053349971771},{"id":"https://openalex.org/C160191386","wikidata":"https://www.wikidata.org/wiki/Q868299","display_name":"Control flow","level":2,"score":0.4208982586860657},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.10013291239738464}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.1145/3674638","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3674638","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"},{"id":"pmh:oai:nottingham-repository.worktribe.com:36576878","is_oa":true,"landing_page_url":"https://nottingham-repository.worktribe.com/output/36576878","pdf_url":"https://nottingham-repository.worktribe.com/file/36576878/1/Beyond%20Trees%3A%20Calculating%20Graph-Based%20Compilers%20%28Functional%20Pearl%29","source":{"id":"https://openalex.org/S4306402483","display_name":"Repository@Nottingham (University of Nottingham)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I142263535","host_organization_name":"University of Nottingham","host_organization_lineage":["https://openalex.org/I142263535"],"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":"publishedVersion"},{"id":"pmh:oai:pure.atira.dk:publications/1a301061-af0b-4827-87e1-c4029c77b934","is_oa":true,"landing_page_url":"https://pure.itu.dk/portal/da/publications/1a301061-af0b-4827-87e1-c4029c77b934","pdf_url":"https://pure.itu.dk/ws/files/108631256/graphcalc-paper.pdf","source":{"id":"https://openalex.org/S4377196680","display_name":"IT University Of Copenhagen (IT University of Copenhagen)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I83467386","host_organization_name":"IT University of Copenhagen","host_organization_lineage":["https://openalex.org/I83467386"],"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":"Bahr, P & Hutton, G 2024, 'Beyond Trees: Calculating Graph-Based Compilers (Functional Pearl)', Proceedings of the ACM on Programming Languages, vol. 8, no. ICFP249, 249, pp. 370 - 394. https://doi.org/10.1145/3674638","raw_type":"info:eu-repo/semantics/publishedVersion"}],"best_oa_location":{"id":"doi:10.1145/3674638","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3674638","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":[{"id":"https://openalex.org/G6521090107","display_name":"Semantics-Directed Compiler Construction: From Formal Semantics to Certified Compilers","funder_award_id":"EP/Y010744/1","funder_id":"https://openalex.org/F4320334627","funder_display_name":"Engineering and Physical Sciences Research Council"},{"id":"https://openalex.org/G8083300730","display_name":null,"funder_award_id":"EP/Y010744/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":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":24,"referenced_works":["https://openalex.org/W43926523","https://openalex.org/W1522809628","https://openalex.org/W1552581850","https://openalex.org/W1560964942","https://openalex.org/W1575675278","https://openalex.org/W1593280365","https://openalex.org/W1987031623","https://openalex.org/W2006731094","https://openalex.org/W2071471611","https://openalex.org/W2074556793","https://openalex.org/W2080726204","https://openalex.org/W2086201554","https://openalex.org/W2132181573","https://openalex.org/W2160947267","https://openalex.org/W2166289497","https://openalex.org/W2171496589","https://openalex.org/W2751199924","https://openalex.org/W2899103964","https://openalex.org/W3035097735","https://openalex.org/W4205786399","https://openalex.org/W4210988604","https://openalex.org/W4246086292","https://openalex.org/W4386317079","https://openalex.org/W6930114261"],"related_works":["https://openalex.org/W4252501555","https://openalex.org/W2003848320","https://openalex.org/W2138385884","https://openalex.org/W2166895275","https://openalex.org/W2080313875","https://openalex.org/W2998775986","https://openalex.org/W157564837","https://openalex.org/W2011536294","https://openalex.org/W4210453401","https://openalex.org/W2320849189"],"abstract_inverted_index":{"Bahr":[0],"and":[1],"Hutton":[2],"recently":[3],"developed":[4],"an":[5],"approach":[6,30,78],"to":[7,17,65,83],"compiler":[8],"calculation":[9],"that":[10,32,37,47,59,86],"allows":[11],"a":[12,26,98],"wide":[13],"range":[14],"of":[15,22,28,63,103],"compilers":[16,36,44,85],"be":[18,81],"derived":[19],"from":[20],"specifications":[21],"their":[23,77],"correctness.":[24],"However,":[25],"limitation":[27],"the":[29,52,55,61,69,92],"is":[31,48],"it":[33],"results":[34],"in":[35,54,68],"produce":[38,45,87],"tree-structured":[39],"code.":[40,70],"By":[41],"contrast,":[42],"realistic":[43],"code":[46],"essentially":[49],"graph-structured,":[50],"where":[51],"edges":[53],"graph":[56],"represent":[57],"jumps":[58],"transfer":[60],"flow":[62],"control":[64],"other":[66],"locations":[67],"In":[71],"this":[72],"article,":[73],"we":[74],"show":[75],"how":[76],"can":[79],"naturally":[80],"adapted":[82],"calculate":[84],"graph-structured":[88],"code,":[89],"without":[90],"changing":[91],"underlying":[93],"calculational":[94],"methodology,":[95],"by":[96],"using":[97],"higher-order":[99],"abstract":[100],"syntax":[101],"representation":[102],"graphs.":[104]},"counts_by_year":[],"updated_date":"2026-03-25T14:56:36.534964","created_date":"2024-08-16T00:00:00"}
