{"id":"https://openalex.org/W4252223645","doi":"https://doi.org/10.1109/cgo.2015.7054200","title":"A graph-based higher-order intermediate representation","display_name":"A graph-based higher-order intermediate representation","publication_year":2015,"publication_date":"2015-02-01","ids":{"openalex":"https://openalex.org/W4252223645","doi":"https://doi.org/10.1109/cgo.2015.7054200"},"language":"en","primary_location":{"id":"doi:10.1109/cgo.2015.7054200","is_oa":false,"landing_page_url":"https://doi.org/10.1109/cgo.2015.7054200","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2015 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5110249437","display_name":"Roland Leisa","orcid":null},"institutions":[{"id":"https://openalex.org/I91712215","display_name":"Saarland University","ror":"https://ror.org/01jdpyv68","country_code":"DE","type":"education","lineage":["https://openalex.org/I91712215"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Roland Leisa","raw_affiliation_strings":["Department of Computer Science, Saarland University"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Department of Computer Science, Saarland University","institution_ids":["https://openalex.org/I91712215"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5111488071","display_name":"Marcel K\u00f6ster","orcid":null},"institutions":[{"id":"https://openalex.org/I91712215","display_name":"Saarland University","ror":"https://ror.org/01jdpyv68","country_code":"DE","type":"education","lineage":["https://openalex.org/I91712215"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Marcel Koster","raw_affiliation_strings":["Department of Computer Science, Saarland University"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Department of Computer Science, Saarland University","institution_ids":["https://openalex.org/I91712215"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5018809145","display_name":"Sebastian Hack","orcid":"https://orcid.org/0000-0002-3387-2134"},"institutions":[{"id":"https://openalex.org/I91712215","display_name":"Saarland University","ror":"https://ror.org/01jdpyv68","country_code":"DE","type":"education","lineage":["https://openalex.org/I91712215"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Sebastian Hack","raw_affiliation_strings":["Department of Computer Science, Saarland University"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Department of Computer Science, Saarland University","institution_ids":["https://openalex.org/I91712215"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I91712215"],"apc_list":null,"apc_paid":null,"fwci":2.6191,"has_fulltext":false,"cited_by_count":13,"citation_normalized_percentile":{"value":0.92216551,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":null,"issue":null,"first_page":"202","last_page":"212"},"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.9997000098228455,"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.9997000098228455,"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.9994000196456909,"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.9933000206947327,"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/computer-science","display_name":"Computer science","score":0.7730268239974976},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.7354284524917603},{"id":"https://openalex.org/keywords/loop-unrolling","display_name":"Loop unrolling","score":0.7290123105049133},{"id":"https://openalex.org/keywords/dependency-graph","display_name":"Dependency graph","score":0.6530073881149292},{"id":"https://openalex.org/keywords/program-transformation","display_name":"Program transformation","score":0.6489889621734619},{"id":"https://openalex.org/keywords/scope","display_name":"Scope (computer science)","score":0.5225793123245239},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.515877366065979},{"id":"https://openalex.org/keywords/recursion","display_name":"Recursion (computer science)","score":0.5092886686325073},{"id":"https://openalex.org/keywords/graph-rewriting","display_name":"Graph rewriting","score":0.508155107498169},{"id":"https://openalex.org/keywords/lambda-calculus","display_name":"Lambda calculus","score":0.5018749237060547},{"id":"https://openalex.org/keywords/nesting","display_name":"Nesting (process)","score":0.4947333037853241},{"id":"https://openalex.org/keywords/transformation","display_name":"Transformation (genetics)","score":0.487323135137558},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.469819575548172},{"id":"https://openalex.org/keywords/graph","display_name":"Graph","score":0.4588836133480072},{"id":"https://openalex.org/keywords/continuation","display_name":"Continuation","score":0.4298023581504822},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.09566506743431091}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7730268239974976},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.7354284524917603},{"id":"https://openalex.org/C76970557","wikidata":"https://www.wikidata.org/wiki/Q1869750","display_name":"Loop unrolling","level":3,"score":0.7290123105049133},{"id":"https://openalex.org/C16311509","wikidata":"https://www.wikidata.org/wiki/Q4148050","display_name":"Dependency graph","level":3,"score":0.6530073881149292},{"id":"https://openalex.org/C2778361913","wikidata":"https://www.wikidata.org/wiki/Q7248437","display_name":"Program transformation","level":2,"score":0.6489889621734619},{"id":"https://openalex.org/C2778012447","wikidata":"https://www.wikidata.org/wiki/Q1034415","display_name":"Scope (computer science)","level":2,"score":0.5225793123245239},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.515877366065979},{"id":"https://openalex.org/C168773036","wikidata":"https://www.wikidata.org/wiki/Q264164","display_name":"Recursion (computer science)","level":2,"score":0.5092886686325073},{"id":"https://openalex.org/C558772884","wikidata":"https://www.wikidata.org/wiki/Q1508564","display_name":"Graph rewriting","level":3,"score":0.508155107498169},{"id":"https://openalex.org/C135790938","wikidata":"https://www.wikidata.org/wiki/Q242028","display_name":"Lambda calculus","level":2,"score":0.5018749237060547},{"id":"https://openalex.org/C2776937656","wikidata":"https://www.wikidata.org/wiki/Q2229669","display_name":"Nesting (process)","level":2,"score":0.4947333037853241},{"id":"https://openalex.org/C204241405","wikidata":"https://www.wikidata.org/wiki/Q461499","display_name":"Transformation (genetics)","level":3,"score":0.487323135137558},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.469819575548172},{"id":"https://openalex.org/C132525143","wikidata":"https://www.wikidata.org/wiki/Q141488","display_name":"Graph","level":2,"score":0.4588836133480072},{"id":"https://openalex.org/C88626702","wikidata":"https://www.wikidata.org/wiki/Q1128903","display_name":"Continuation","level":2,"score":0.4298023581504822},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.09566506743431091},{"id":"https://openalex.org/C192562407","wikidata":"https://www.wikidata.org/wiki/Q228736","display_name":"Materials science","level":0,"score":0.0},{"id":"https://openalex.org/C104317684","wikidata":"https://www.wikidata.org/wiki/Q7187","display_name":"Gene","level":2,"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/C55493867","wikidata":"https://www.wikidata.org/wiki/Q7094","display_name":"Biochemistry","level":1,"score":0.0},{"id":"https://openalex.org/C191897082","wikidata":"https://www.wikidata.org/wiki/Q11467","display_name":"Metallurgy","level":1,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1109/cgo.2015.7054200","is_oa":false,"landing_page_url":"https://doi.org/10.1109/cgo.2015.7054200","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2015 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)","raw_type":"proceedings-article"},{"id":"pmh:oai:ub-madoc.bib.uni-mannheim.de:60598","is_oa":false,"landing_page_url":"https://ieeexplore.ieee.org/abstract/document/7054200","pdf_url":null,"source":{"id":"https://openalex.org/S4377196315","display_name":"MADOC (University of Mannheim)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I177802217","host_organization_name":"University of Mannheim","host_organization_lineage":["https://openalex.org/I177802217"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Konferenzver\u00f6ffentlichung"}],"best_oa_location":null,"sustainable_development_goals":[{"display_name":"Quality Education","score":0.7400000095367432,"id":"https://metadata.un.org/sdg/4"}],"awards":[],"funders":[{"id":"https://openalex.org/F4320321114","display_name":"Bundesministerium f\u00fcr Bildung und Forschung","ror":"https://ror.org/04pz7b180"}],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":28,"referenced_works":["https://openalex.org/W76990466","https://openalex.org/W199231109","https://openalex.org/W1534459555","https://openalex.org/W1552045127","https://openalex.org/W1974621770","https://openalex.org/W1981830935","https://openalex.org/W1982205631","https://openalex.org/W1997143185","https://openalex.org/W2010452422","https://openalex.org/W2046656770","https://openalex.org/W2061915850","https://openalex.org/W2073904768","https://openalex.org/W2077853727","https://openalex.org/W2099107163","https://openalex.org/W2118172707","https://openalex.org/W2130363716","https://openalex.org/W2147045141","https://openalex.org/W2149127686","https://openalex.org/W2152885483","https://openalex.org/W2154273644","https://openalex.org/W2338718339","https://openalex.org/W2912126004","https://openalex.org/W3016921254","https://openalex.org/W3157787941","https://openalex.org/W4246798589","https://openalex.org/W6631922783","https://openalex.org/W6669861500","https://openalex.org/W6703782185"],"related_works":["https://openalex.org/W2371501690","https://openalex.org/W135379672","https://openalex.org/W4246798589","https://openalex.org/W2082709037","https://openalex.org/W1496084514","https://openalex.org/W4237313518","https://openalex.org/W1531699876","https://openalex.org/W1512888794","https://openalex.org/W2145663636","https://openalex.org/W4252223645"],"abstract_inverted_index":{"Many":[0],"modern":[1],"programming":[2],"languages":[3],"support":[4],"both":[5,76],"imperative":[6,12,77],"and":[7],"functional":[8,20,29,52,81],"idioms.":[9],"However,":[10],"state-of-the-art":[11],"intermediate":[13],"representations":[14],"(IRs)":[15],"cannot":[16],"natively":[17],"represent":[18],"crucial":[19],"concepts":[21],"(like":[22],"higher-order":[23,96,137],"functions).":[24],"On":[25],"the":[26,92],"other":[27],"hand,":[28],"IRs":[30],"employ":[31],"an":[32,72,107],"explicit":[33,60],"scope":[34,61],"nesting,":[35],"which":[36],"is":[37,104],"cumbersome":[38],"to":[39,90],"maintain":[40],"across":[41],"certain":[42],"transformations.":[43],"In":[44,131],"this":[45,102],"paper":[46],"we":[47,84,134],"present":[48,85],"Thorin:":[49],"a":[50,66,86],"higher-order,":[51],"IR":[53,74],"based":[54],"on":[55],"continuation-passing":[56],"style":[57],"that":[58,115,136],"abandons":[59],"nesting":[62],"in":[63,111],"favor":[64],"of":[65,101],"dependency":[67],"graph.":[68],"This":[69],"makes":[70],"Thorin":[71,141],"attractive":[73],"for":[75],"as":[78,80,144,146],"well":[79],"languages.":[82],"Furthermore,":[83],"novel":[87],"program":[88,121],"transformation":[89,103,109],"eliminate":[91],"overhead":[93],"caused":[94],"by":[95],"functions.":[97],"The":[98],"main":[99],"component":[100],"lambda":[105,116],"mangling:":[106],"important":[108],"primitive":[110],"Thorin.":[112],"We":[113],"demonstrate":[114],"mangling":[117],"subsumes":[118],"many":[119],"classic":[120],"transformations":[122],"like":[123],"tail-recursion":[124],"elimination,":[125],"loop":[126],"unrolling":[127],"or":[128],"(partial)":[129],"inlining.":[130],"our":[132],"experiments":[133],"show":[135],"programs":[138],"translated":[139],"with":[140],"are":[142],"consistently":[143],"fast":[145],"C":[147],"programs.":[148]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":2},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":3},{"year":2018,"cited_by_count":1},{"year":2017,"cited_by_count":2},{"year":2016,"cited_by_count":1},{"year":2015,"cited_by_count":2}],"updated_date":"2026-07-02T09:51:11.867554","created_date":"2022-05-12T00:00:00"}
