{"id":"https://openalex.org/W3216905048","doi":"https://doi.org/10.1145/3486609.3487198","title":"Metaprogramming with combinators","display_name":"Metaprogramming with combinators","publication_year":2021,"publication_date":"2021-10-17","ids":{"openalex":"https://openalex.org/W3216905048","doi":"https://doi.org/10.1145/3486609.3487198","mag":"3216905048"},"language":"en","primary_location":{"id":"doi:10.1145/3486609.3487198","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3486609.3487198","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 20th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","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/A5033913467","display_name":"Mahshid Shahmohammadian","orcid":"https://orcid.org/0000-0002-2590-9371"},"institutions":[{"id":"https://openalex.org/I72816309","display_name":"Drexel University","ror":"https://ror.org/04bdffz58","country_code":"US","type":"education","lineage":["https://openalex.org/I72816309"]}],"countries":["US"],"is_corresponding":true,"raw_author_name":"Mahshid Shahmohammadian","raw_affiliation_strings":["Drexel University, USA"],"raw_orcid":"https://orcid.org/0000-0002-2590-9371","affiliations":[{"raw_affiliation_string":"Drexel University, USA","institution_ids":["https://openalex.org/I72816309"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5091390132","display_name":"Geoffrey Mainland","orcid":"https://orcid.org/0000-0002-0328-8594"},"institutions":[{"id":"https://openalex.org/I72816309","display_name":"Drexel University","ror":"https://ror.org/04bdffz58","country_code":"US","type":"education","lineage":["https://openalex.org/I72816309"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Geoffrey Mainland","raw_affiliation_strings":["Drexel University, USA"],"raw_orcid":"https://orcid.org/0000-0002-0328-8594","affiliations":[{"raw_affiliation_string":"Drexel University, USA","institution_ids":["https://openalex.org/I72816309"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5033913467"],"corresponding_institution_ids":["https://openalex.org/I72816309"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":false,"cited_by_count":0,"citation_normalized_percentile":{"value":0.19300935,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"43","last_page":"54"},"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.9998000264167786,"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.9998000264167786,"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.9997000098228455,"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/T11697","display_name":"Numerical Methods and Algorithms","score":0.9991000294685364,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"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/metaprogramming","display_name":"Metaprogramming","score":0.8685678243637085},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8679696917533875},{"id":"https://openalex.org/keywords/combinatory-logic","display_name":"Combinatory logic","score":0.8508361577987671},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7810645699501038},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.6013633608818054},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.5236658453941345},{"id":"https://openalex.org/keywords/macro","display_name":"Macro","score":0.46083691716194153},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.44011884927749634},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.4087643623352051},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.17601892352104187}],"concepts":[{"id":"https://openalex.org/C35390924","wikidata":"https://www.wikidata.org/wiki/Q661075","display_name":"Metaprogramming","level":2,"score":0.8685678243637085},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8679696917533875},{"id":"https://openalex.org/C79678938","wikidata":"https://www.wikidata.org/wiki/Q1481571","display_name":"Combinatory logic","level":2,"score":0.8508361577987671},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7810645699501038},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.6013633608818054},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.5236658453941345},{"id":"https://openalex.org/C166955791","wikidata":"https://www.wikidata.org/wiki/Q629579","display_name":"Macro","level":2,"score":0.46083691716194153},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.44011884927749634},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.4087643623352051},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.17601892352104187}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3486609.3487198","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3486609.3487198","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 20th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G5295620228","display_name":null,"funder_award_id":"CCF-1717088","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"}],"funders":[{"id":"https://openalex.org/F4320306076","display_name":"National Science Foundation","ror":"https://ror.org/021nxhr62"}],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":26,"referenced_works":["https://openalex.org/W12507744","https://openalex.org/W1583099307","https://openalex.org/W1584721038","https://openalex.org/W1875609239","https://openalex.org/W1983394510","https://openalex.org/W1985956780","https://openalex.org/W2003131643","https://openalex.org/W2044417921","https://openalex.org/W2044829853","https://openalex.org/W2049600101","https://openalex.org/W2055947235","https://openalex.org/W2056727696","https://openalex.org/W2071630526","https://openalex.org/W2098394034","https://openalex.org/W2115452265","https://openalex.org/W2119717320","https://openalex.org/W2136045037","https://openalex.org/W2147578933","https://openalex.org/W2168989922","https://openalex.org/W2174554963","https://openalex.org/W2295597695","https://openalex.org/W2911891988","https://openalex.org/W2913417348","https://openalex.org/W2950967672","https://openalex.org/W2969299179","https://openalex.org/W4244488020"],"related_works":["https://openalex.org/W2063393078","https://openalex.org/W2741344200","https://openalex.org/W1556401754","https://openalex.org/W2112263414","https://openalex.org/W3006464425","https://openalex.org/W3004782279","https://openalex.org/W1602185604","https://openalex.org/W1734457603","https://openalex.org/W2521829344","https://openalex.org/W2155480936"],"abstract_inverted_index":{"There":[0],"are":[1],"a":[2,14,66],"wide":[3],"array":[4],"of":[5,47],"methods":[6],"for":[7,13],"writing":[8],"code":[9,112],"generators.":[10],"We":[11,105],"advocate":[12],"point":[15],"in":[16,115],"the":[17,99],"design":[18],"space,":[19],"which":[20],"we":[21],"call":[22],"metaprogramming":[23,74,107],"with":[24,75,108],"combinators,":[25],"where":[26],"programmers":[27],"use":[28],"(and":[29],"write)":[30],"combinator":[31],"libraries":[32],"that":[33,43,117],"directly":[34],"manipulate":[35],"object":[36],"language":[37,41,59],"terms.":[38],"The":[39],"key":[40],"feature":[42],"makes":[44],"this":[45],"style":[46],"programming":[48],"palatable":[49],"is":[50,64],"quasiquotation.":[51],"Our":[52],"approach":[53],"leverages":[54],"quasiquotation":[55],"and":[56,90],"other":[57,72],"host":[58],"features":[60],"to":[61,101,121],"provide":[62],"what":[63],"essentially":[65],"rich,":[67],"well-typed":[68],"macro":[69],"language.":[70],"Unlike":[71],"approaches,":[73],"combinators":[76,109],"allows":[77],"full":[78,86],"control":[79,87,94],"over":[80,88],"generated":[81],"code,":[82],"thereby":[83],"also":[84],"providing":[85],"performance":[89],"resource":[91],"usage.":[92],"This":[93],"does":[95],"not":[96],"require":[97],"sacrificing":[98],"ability":[100],"write":[102],"high-level":[103],"abstractions.":[104],"demonstrate":[106],"through":[110],"several":[111],"generators":[113],"written":[114],"Haskell":[116],"produce":[118],"VHDL":[119],"targeted":[120],"Xilinx":[122],"FPGAs.":[123]},"counts_by_year":[],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
