{"id":"https://openalex.org/W1551189225","doi":null,"title":"Code Optimisation Techniques for Lazy Functional Languages","display_name":"Code Optimisation Techniques for Lazy Functional Languages","publication_year":1999,"publication_date":"1999-01-01","ids":{"openalex":"https://openalex.org/W1551189225","mag":"1551189225"},"language":"en","primary_location":{"id":"pmh:oai:publications.lib.chalmers.se:890","doi":null,"is_oa":false,"landing_page_url":"http://publications.lib.chalmers.se/publication/890-code-optimisation-techniques-for-lazy-functional-languages","pdf_url":null,"source":{"id":"https://openalex.org/S4377196470","display_name":"Chalmers Publication Library (Chalmers University of Technology)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I66862912","host_organization_name":"Chalmers University of Technology","host_organization_lineage":["https://openalex.org/I66862912"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Text.Thesis.Doctoral"},"volume":null,"type":"dissertation","is_traditional":true,"indexed_in":[],"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/A5085302355","display_name":"Urban Boquist","orcid":null,"observed_orcids":[]},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Urban Boquist","raw_affiliation_strings":[],"raw_orcid":null,"affiliations":[]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":0,"corresponding_author_ids":["https://openalex.org/A5085302355"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":null,"has_fulltext":false,"cited_by_count":21,"citation_normalized_percentile":null,"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":null,"last_page":null},"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.9843999743461609,"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"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9843999743461609,"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.011599999852478504,"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/T10904","display_name":"Embedded Systems Design Techniques","score":0.0006000000284984708,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/lazy-functional-languages","display_name":"lazy functional languages","score":0.9259999990463257},{"id":"https://openalex.org/keywords/compiler-back-end","display_name":"compiler backend","score":0.9710000157356262},{"id":"https://openalex.org/keywords/graph-reduction","display_name":"graph reduction","score":0.5690000057220459},{"id":"https://openalex.org/keywords/control-flow-analysis","display_name":"control flow analysis","score":0.7129999995231628},{"id":"https://openalex.org/keywords/program-transformation","display_name":"program transformation","score":0.675000011920929},{"id":"https://openalex.org/keywords/graph-coloring","display_name":"graph coloring","score":0.6930000185966492},{"id":"https://openalex.org/keywords/shrink-wrapping","display_name":"shrink wrapping","score":0.9049999713897705},{"id":"https://openalex.org/keywords/calling-conventions","display_name":"calling conventions","score":0.7699999809265137},{"id":"https://openalex.org/keywords/garbage-collection","display_name":"garbage collection","score":0.8999999761581421},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.4909999966621399}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8532086610794067},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.7246914505958557},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6839466094970703},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.5939398407936096},{"id":"https://openalex.org/C160191386","wikidata":"https://www.wikidata.org/wiki/Q868299","display_name":"Control flow","level":2,"score":0.571839451789856},{"id":"https://openalex.org/C97042676","wikidata":"https://www.wikidata.org/wiki/Q5597097","display_name":"Graph reduction","level":3,"score":0.5502380132675171},{"id":"https://openalex.org/C98183937","wikidata":"https://www.wikidata.org/wiki/Q2112188","display_name":"Program analysis","level":2,"score":0.5022411346435547},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.4975643455982208},{"id":"https://openalex.org/C2778361913","wikidata":"https://www.wikidata.org/wiki/Q7248437","display_name":"Program transformation","level":2,"score":0.484023779630661},{"id":"https://openalex.org/C134757568","wikidata":"https://www.wikidata.org/wiki/Q274089","display_name":"Heap (data structure)","level":2,"score":0.48203957080841064},{"id":"https://openalex.org/C115168132","wikidata":"https://www.wikidata.org/wiki/Q55813","display_name":"Machine code","level":3,"score":0.47833821177482605},{"id":"https://openalex.org/C128916667","wikidata":"https://www.wikidata.org/wiki/Q1343660","display_name":"Register allocation","level":3,"score":0.4647117853164673},{"id":"https://openalex.org/C45357846","wikidata":"https://www.wikidata.org/wiki/Q2001982","display_name":"Notation","level":2,"score":0.4471637010574341},{"id":"https://openalex.org/C102379954","wikidata":"https://www.wikidata.org/wiki/Q2589940","display_name":"Call graph","level":2,"score":0.44406041502952576},{"id":"https://openalex.org/C27458966","wikidata":"https://www.wikidata.org/wiki/Q1187693","display_name":"Control flow graph","level":2,"score":0.42695263028144836},{"id":"https://openalex.org/C119024030","wikidata":"https://www.wikidata.org/wiki/Q759899","display_name":"Call stack","level":3,"score":0.41474559903144836},{"id":"https://openalex.org/C94375191","wikidata":"https://www.wikidata.org/wiki/Q11205","display_name":"Arithmetic","level":1,"score":0.21861204504966736},{"id":"https://openalex.org/C9395851","wikidata":"https://www.wikidata.org/wiki/Q177929","display_name":"Stack (abstract data type)","level":2,"score":0.10332688689231873},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.0941523015499115}],"mesh":[],"locations_count":3,"locations":[{"id":"pmh:oai:publications.lib.chalmers.se:890","doi":null,"is_oa":false,"landing_page_url":"http://publications.lib.chalmers.se/publication/890-code-optimisation-techniques-for-lazy-functional-languages","pdf_url":null,"source":{"id":"https://openalex.org/S4377196470","display_name":"Chalmers Publication Library (Chalmers University of Technology)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I66862912","host_organization_name":"Chalmers University of Technology","host_organization_lineage":["https://openalex.org/I66862912"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Text.Thesis.Doctoral"},{"id":"pmh:oai:research.chalmers.se:890","doi":null,"is_oa":false,"landing_page_url":"https://research.chalmers.se/en/publication/890","pdf_url":null,"source":{"id":"https://openalex.org/S4306402469","display_name":"Chalmers Research (Chalmers University of Technology)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I66862912","host_organization_name":"Chalmers University of Technology","host_organization_lineage":["https://openalex.org/I66862912"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":null},{"id":"mag:1551189225","doi":null,"is_oa":false,"landing_page_url":"https://research.chalmers.se/en/publication/890","pdf_url":null,"source":null,"license":null,"license_id":null,"version":null,"is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":null}],"best_oa_location":null,"sustainable_development_goals":[],"study_designs":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":0,"referenced_works":[],"related_works":["https://openalex.org/W1575663121","https://openalex.org/W7048900363","https://openalex.org/W2034429895","https://openalex.org/W3126630191","https://openalex.org/W7100124416","https://openalex.org/W1555034713","https://openalex.org/W48014533","https://openalex.org/W7096559859","https://openalex.org/W6910441683","https://openalex.org/W1586212986"],"abstract_inverted_index":{"This":[0],"thesis":[1],"describes":[2],"a":[3,55,87,94,136,187,215,231,258,268,316,339],"complete":[4],"compiler":[5],"back-end":[6,48,358],"for":[7,63,272],"lazy":[8],"functional":[9],"languages,":[10],"which":[11,42],"uses":[12],"various":[13],"interprocedural":[14,210,255],"optimisations":[15,302],"to":[16,79,98,109,130,147,186,234,245,278,293,343],"produce":[17,162],"highly":[18],"optimised":[19,166],"code.":[20,167,206],"The":[21,51,102,226,265,313],"most":[22],"important":[23],"contributions":[24],"of":[25,46,104,132,139,218,238,261,300,323,341],"this":[26],"work":[27],"are":[28,145,152,171],"the":[29,43,47,70,74,99,105,115,121,148,175,181,194,198,220,236,298,349,353,364],"following.":[30],"A":[31,284],"novel":[32],"intermediate":[33,191],"language,":[34,192],"called":[35,93],"GRIN":[36,52,100,140,182,199],"(Graph":[37],"Reduction":[38],"Intermediate":[39],"Notation),":[40],"around":[41],"first":[44],"part":[45],"is":[49,107,124,201,291],"built.":[50],"language":[53,183],"has":[54],"very":[56,153,336],"\"functional":[57],"flavour\",":[58],"making":[59],"it":[60],"well":[61],"suited":[62],"analysis":[64,106],"and":[65,159,165,223,241,248,257,282,288,321,325,372],"program":[66,142],"transformation,":[67],"but":[68,155],"at":[69,126],"same":[71],"time":[72,128,287],"provides":[73],"\"low":[75],"level\"":[76],"machinery":[77],"needed":[78],"express":[80],"many":[81],"concrete":[82],"implementation":[83],"details.":[84],"We":[85,134,207],"apply":[86],"program-wide":[88],"control":[89,112,178],"flow":[90,113],"analysis,":[91,97],"also":[92],"heap":[95],"points-to":[96],"program.":[101,149],"result":[103],"used":[108,277,292],"eliminate":[110],"unknown":[111,125],"in":[114,297],"program,":[116],"i.e.,":[117],"function":[118,221,274,280],"calls":[119],"where":[120],"call":[122,222,318],"target":[123],"compile":[127,286],"(due":[129],"forcing":[131],"closures).":[133],"present":[135],"large":[137],"number":[138],"source-to-source":[141],"transformations":[143,151,170],"that":[144],"applied":[146,160],"Most":[150],"simple":[154],"when":[156],"taken":[157,347],"together,":[158],"repeatedly,":[161],"greatly":[163],"simplified":[164],"Several":[168],"non-standard":[169],"made":[172],"possible":[173],"by":[174,180,356,367],"low":[176],"level":[177,190],"offered":[179],"(when":[184],"compared":[185],"more":[188],"high":[189],"e.g.,":[193],"STG":[195],"language).":[196],"Eventually,":[197],"code":[200,354,365],"translated":[202],"into":[203],"RISC":[204],"machine":[205],"develop":[208],"an":[209],"register":[211,227,239,306],"allocation":[212,228],"algorithm,":[213],"with":[214,254],"main":[216],"purpose":[217],"decreasing":[219],"return":[224],"overhead.":[225,312],"algorithm":[229,266],"includes":[230,315],"new":[232],"technique":[233],"optimise":[235],"placement":[237],"save":[240],"restore":[242],"instructions,":[243],"related":[244],"Chow's":[246],"shrink-wrapping,":[247],"extends":[249],"traditional":[250],"Chaitin-style":[251],"graph":[252],"colouring":[253],"coalescing":[256],"restricted":[259],"form":[260],"live":[262],"range":[263],"splitting.":[264],"produces":[267],"tailor-made":[269],"calling":[270],"convention":[271],"each":[273],"(the":[275],"registers":[276,324],"pass":[279],"arguments":[281],"results).":[283],"combined":[285],"runtime":[289,317],"approach":[290],"support":[294],"garbage":[295],"collection":[296],"presence":[299],"aggressive":[301],"(most":[303],"notably":[304],"our":[305,357],"allocation),":[307],"without":[308],"imposing":[309],"any":[310],"mutator":[311],"method":[314],"stack":[319,326],"traversal":[320],"interpretation":[322],"frames":[327],"using":[328],"pre-computed":[329],"descriptor":[330],"tables.":[331],"Experiments":[332],"sofar":[333],"have":[334],"been":[335],"promising.":[337],"For":[338],"set":[340],"small":[342],"medium-sized":[344],"Haskell":[345],"programs":[346],"from":[348],"nofib":[350],"benchmark":[351],"suite,":[352],"produced":[355,366],"executes":[359],"several":[360],"times":[361],"faster":[362],"than":[363],"some":[368],"other":[369],"compilers":[370],"(ghc":[371],"hbc).":[373]},"counts_by_year":[{"year":2021,"cited_by_count":1},{"year":2014,"cited_by_count":1},{"year":2013,"cited_by_count":1}],"updated_date":"2026-11-10T11:39:43.021295","created_date":"2016-06-24T00:00:00"}
