{"id":"https://openalex.org/W3108745470","doi":"https://doi.org/10.1145/3425898.3426953","title":"Fluid quotes: metaprogramming across abstraction boundaries with dependent types","display_name":"Fluid quotes: metaprogramming across abstraction boundaries with dependent types","publication_year":2020,"publication_date":"2020-11-16","ids":{"openalex":"https://openalex.org/W3108745470","doi":"https://doi.org/10.1145/3425898.3426953","mag":"3108745470"},"language":"en","primary_location":{"id":"doi:10.1145/3425898.3426953","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3425898.3426953","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3425898.3426953","source":null,"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 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3425898.3426953","any_repository_has_fulltext":null},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5018127900","display_name":"Shadaj Laddad","orcid":"https://orcid.org/0000-0002-6658-6548"},"institutions":[{"id":"https://openalex.org/I95457486","display_name":"University of California, Berkeley","ror":"https://ror.org/01an7q238","country_code":"US","type":"education","lineage":["https://openalex.org/I95457486"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Shadaj Laddad","raw_affiliation_strings":["University of California at Berkeley, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of California at Berkeley, USA","institution_ids":["https://openalex.org/I95457486"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5101569699","display_name":"Koushik Sen","orcid":"https://orcid.org/0000-0002-4539-9188"},"institutions":[{"id":"https://openalex.org/I95457486","display_name":"University of California, Berkeley","ror":"https://ror.org/01an7q238","country_code":"US","type":"education","lineage":["https://openalex.org/I95457486"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Koushik Sen","raw_affiliation_strings":["University of California at Berkeley, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of California at Berkeley, USA","institution_ids":["https://openalex.org/I95457486"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I95457486"],"apc_list":null,"apc_paid":null,"fwci":null,"has_fulltext":true,"cited_by_count":1,"citation_normalized_percentile":null,"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"98","last_page":"110"},"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.9994000196456909,"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.9994000196456909,"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/T10260","display_name":"Software Engineering Research","score":0.9984999895095825,"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"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9979000091552734,"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/computer-science","display_name":"Computer science","score":0.8663080930709839},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.8208599090576172},{"id":"https://openalex.org/keywords/metaprogramming","display_name":"Metaprogramming","score":0.7259647846221924},{"id":"https://openalex.org/keywords/macro","display_name":"Macro","score":0.5610215067863464},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.5571578741073608},{"id":"https://openalex.org/keywords/abstraction","display_name":"Abstraction","score":0.4941995441913605},{"id":"https://openalex.org/keywords/porting","display_name":"Porting","score":0.48328545689582825},{"id":"https://openalex.org/keywords/source-code","display_name":"Source code","score":0.4805377125740051},{"id":"https://openalex.org/keywords/codebase","display_name":"Codebase","score":0.47300535440444946},{"id":"https://openalex.org/keywords/generic-programming","display_name":"Generic programming","score":0.44919630885124207},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.4210275113582611},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.1297631859779358}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8663080930709839},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.8208599090576172},{"id":"https://openalex.org/C35390924","wikidata":"https://www.wikidata.org/wiki/Q661075","display_name":"Metaprogramming","level":2,"score":0.7259647846221924},{"id":"https://openalex.org/C166955791","wikidata":"https://www.wikidata.org/wiki/Q629579","display_name":"Macro","level":2,"score":0.5610215067863464},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5571578741073608},{"id":"https://openalex.org/C124304363","wikidata":"https://www.wikidata.org/wiki/Q673661","display_name":"Abstraction","level":2,"score":0.4941995441913605},{"id":"https://openalex.org/C106251023","wikidata":"https://www.wikidata.org/wiki/Q851989","display_name":"Porting","level":3,"score":0.48328545689582825},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.4805377125740051},{"id":"https://openalex.org/C51929080","wikidata":"https://www.wikidata.org/wiki/Q2425187","display_name":"Codebase","level":3,"score":0.47300535440444946},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.44919630885124207},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.4210275113582611},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.1297631859779358},{"id":"https://openalex.org/C111472728","wikidata":"https://www.wikidata.org/wiki/Q9471","display_name":"Epistemology","level":1,"score":0.0},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3425898.3426953","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3425898.3426953","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3425898.3426953","source":null,"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 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","raw_type":"proceedings-article"}],"best_oa_location":{"id":"doi:10.1145/3425898.3426953","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3425898.3426953","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3425898.3426953","source":null,"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 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","raw_type":"proceedings-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3108745470.pdf","grobid_xml":"https://content.openalex.org/works/W3108745470.grobid-xml"},"referenced_works_count":18,"referenced_works":["https://openalex.org/W1963538417","https://openalex.org/W2040581748","https://openalex.org/W2076928733","https://openalex.org/W2081124914","https://openalex.org/W2096314727","https://openalex.org/W2104471871","https://openalex.org/W2111632325","https://openalex.org/W2122339407","https://openalex.org/W2135641942","https://openalex.org/W2154697693","https://openalex.org/W2294053737","https://openalex.org/W2535174441","https://openalex.org/W2761451340","https://openalex.org/W2761493120","https://openalex.org/W2898037052","https://openalex.org/W2979385842","https://openalex.org/W3004946341","https://openalex.org/W3013997450"],"related_works":["https://openalex.org/W2063703022","https://openalex.org/W2522699919","https://openalex.org/W2053093724","https://openalex.org/W2729966571","https://openalex.org/W2018501482","https://openalex.org/W2889230297","https://openalex.org/W2048147817","https://openalex.org/W2073905442","https://openalex.org/W1530078320","https://openalex.org/W2137857582"],"abstract_inverted_index":{"Object-oriented":[0],"programming,":[1,3],"functional":[2],"and":[4,56,66,79,118,216],"metaprogramming":[5,160],"each":[6],"offer":[7],"a":[8,18,134],"unique":[9],"axis":[10],"of":[11,102,127,167,205],"abstraction":[12,61,147],"that":[13,137],"enables":[14,158],"modular":[15],"code.":[16,86,200],"Macros,":[17],"common":[19],"technique":[20,136,157],"for":[21,72],"metaprogramming,":[22],"capture":[23,175],"ASTs":[24],"as":[25,64,91],"quotes":[26,70,90,145,174,207],"to":[27,94,112,141,185],"let":[28,142],"users":[29,143],"manipulate":[30],"them":[31,154],"in":[32,84,149],"the":[33,54,69,100,104,125,164,203],"host":[34],"language.":[35],"However,":[36],"macros":[37],"are":[38],"often":[39],"at":[40,53,77],"odds":[41],"with":[42,171],"other":[43],"programming":[44,88],"techniques":[45],"since":[46],"they":[47,190],"can":[48,191],"only":[49,76,177],"process":[50],"code":[51,59,151,179],"written":[52],"call-site":[55],"cannot":[57,80],"analyze":[58],"behind":[60],"boundaries":[62,148],"such":[63],"variables":[65],"methods.":[67],"Furthermore,":[68],"generated":[71],"macro":[73,199],"expansion":[74],"exist":[75],"compile-time":[78],"be":[81,192],"passed":[82],"around":[83],"user":[85],"Multi-stage":[87],"treats":[89],"runtime":[92,116,150,183],"values":[93],"address":[95],"this":[96],"problem,":[97],"but":[98,180],"introduces":[99],"cost":[101],"running":[103],"compiler":[105],"when":[106],"splicing":[107,153],"quotes.":[108],"This":[109,156],"forces":[110],"developers":[111],"choose":[113],"between":[114],"low":[115],"overhead":[117],"modularity.":[119],"What":[120],"if":[121],"we":[122],"could":[123],"have":[124],"best":[126],"both":[128],"worlds?":[129],"We":[130,201],"introduce":[131],"fluid":[132,206],"quotes,":[133],"new":[135,159],"uses":[138],"dependent":[139],"types":[140],"pass":[144],"through":[146,208],"while":[152],"ahead-of-time.":[155],"capabilities":[161,204],"by":[162],"eliminating":[163],"traditional":[165],"requirement":[166],"co-locating":[168],"parameter":[169],"expressions":[170,196],"call-sites.":[172],"Fluid":[173],"not":[176],"source":[178],"also":[181],"associated":[182],"context":[184],"ensure":[186],"correctness.":[187],"In":[188],"addition,":[189],"composed":[193],"into":[194],"larger":[195],"without":[197],"any":[198],"demonstrate":[202],"two":[209],"specific":[210],"applications:":[211],"optimizing":[212],"data":[213],"processing":[214],"pipelines":[215],"making":[217],"language":[218],"integrated":[219],"queries":[220],"more":[221],"flexible.":[222]},"counts_by_year":[{"year":2026,"cited_by_count":1}],"updated_date":"2026-07-14T23:27:15.235271","created_date":"2025-10-10T00:00:00"}
