{"id":"https://openalex.org/W3204781705","doi":"https://doi.org/10.1145/3475738.3480717","title":"Virtual ADTs for portable metaprogramming","display_name":"Virtual ADTs for portable metaprogramming","publication_year":2021,"publication_date":"2021-09-25","ids":{"openalex":"https://openalex.org/W3204781705","doi":"https://doi.org/10.1145/3475738.3480717","mag":"3204781705"},"language":"en","primary_location":{"id":"doi:10.1145/3475738.3480717","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3475738.3480717","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"http://infoscience.epfl.ch/record/290921","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5050200223","display_name":"Nicolas Stucki","orcid":"https://orcid.org/0000-0003-1391-1375"},"institutions":[{"id":"https://openalex.org/I5124864","display_name":"\u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne","ror":"https://ror.org/02s376052","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I5124864"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Nicolas Stucki","raw_affiliation_strings":["EPFL, Switzerland"],"raw_orcid":"https://orcid.org/0000-0003-1391-1375","affiliations":[{"raw_affiliation_string":"EPFL, Switzerland","institution_ids":["https://openalex.org/I5124864"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5027088540","display_name":"Jonathan Immanuel Brachth\u00e4user","orcid":"https://orcid.org/0000-0001-9128-0391"},"institutions":[{"id":"https://openalex.org/I5124864","display_name":"\u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne","ror":"https://ror.org/02s376052","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I5124864"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Jonathan Immanuel Brachth\u00e4user","raw_affiliation_strings":["EPFL, Switzerland"],"raw_orcid":"https://orcid.org/0000-0001-9128-0391","affiliations":[{"raw_affiliation_string":"EPFL, Switzerland","institution_ids":["https://openalex.org/I5124864"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5085410724","display_name":"Martin Odersky","orcid":"https://orcid.org/0009-0005-3923-8993"},"institutions":[{"id":"https://openalex.org/I5124864","display_name":"\u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne","ror":"https://ror.org/02s376052","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I5124864"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Martin Odersky","raw_affiliation_strings":["EPFL, Switzerland"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"EPFL, Switzerland","institution_ids":["https://openalex.org/I5124864"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I5124864"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":false,"cited_by_count":0,"citation_normalized_percentile":{"value":0.13571072,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"36","last_page":"44"},"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.9968000054359436,"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/T10260","display_name":"Software Engineering Research","score":0.9959999918937683,"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/metaprogramming","display_name":"Metaprogramming","score":0.9437877535820007},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8659638166427612},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.8311412334442139},{"id":"https://openalex.org/keywords/scala","display_name":"Scala","score":0.6476304531097412},{"id":"https://openalex.org/keywords/syntax","display_name":"Syntax","score":0.5771923661231995},{"id":"https://openalex.org/keywords/interface","display_name":"Interface (matter)","score":0.5737835764884949},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.5527545213699341},{"id":"https://openalex.org/keywords/abstract-syntax","display_name":"Abstract syntax","score":0.42460933327674866},{"id":"https://openalex.org/keywords/abstract-syntax-tree","display_name":"Abstract syntax tree","score":0.4218676686286926},{"id":"https://openalex.org/keywords/generic-programming","display_name":"Generic programming","score":0.41613057255744934},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.29334455728530884},{"id":"https://openalex.org/keywords/parsing","display_name":"Parsing","score":0.25622427463531494},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.22097614407539368},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.21011725068092346},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.14595428109169006}],"concepts":[{"id":"https://openalex.org/C35390924","wikidata":"https://www.wikidata.org/wiki/Q661075","display_name":"Metaprogramming","level":2,"score":0.9437877535820007},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8659638166427612},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.8311412334442139},{"id":"https://openalex.org/C109701466","wikidata":"https://www.wikidata.org/wiki/Q460584","display_name":"Scala","level":3,"score":0.6476304531097412},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.5771923661231995},{"id":"https://openalex.org/C113843644","wikidata":"https://www.wikidata.org/wiki/Q901882","display_name":"Interface (matter)","level":4,"score":0.5737835764884949},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5527545213699341},{"id":"https://openalex.org/C114408938","wikidata":"https://www.wikidata.org/wiki/Q333373","display_name":"Abstract syntax","level":3,"score":0.42460933327674866},{"id":"https://openalex.org/C58646249","wikidata":"https://www.wikidata.org/wiki/Q127380","display_name":"Abstract syntax tree","level":3,"score":0.4218676686286926},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.41613057255744934},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.29334455728530884},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.25622427463531494},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.22097614407539368},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.21011725068092346},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.14595428109169006},{"id":"https://openalex.org/C157915830","wikidata":"https://www.wikidata.org/wiki/Q2928001","display_name":"Bubble","level":2,"score":0.0},{"id":"https://openalex.org/C129307140","wikidata":"https://www.wikidata.org/wiki/Q6795880","display_name":"Maximum bubble pressure method","level":3,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3475738.3480717","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3475738.3480717","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes","raw_type":"proceedings-article"},{"id":"pmh:oai:infoscience.epfl.ch:290921","is_oa":true,"landing_page_url":"http://infoscience.epfl.ch/record/290921","pdf_url":null,"source":{"id":"https://openalex.org/S4306400487","display_name":"Infoscience (Ecole Polytechnique F\u00e9d\u00e9rale de Lausanne)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by-nc-nd","license_id":"https://openalex.org/licenses/cc-by-nc-nd","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"WoS","raw_type":"conference proceedings"}],"best_oa_location":{"id":"pmh:oai:infoscience.epfl.ch:290921","is_oa":true,"landing_page_url":"http://infoscience.epfl.ch/record/290921","pdf_url":null,"source":{"id":"https://openalex.org/S4306400487","display_name":"Infoscience (Ecole Polytechnique F\u00e9d\u00e9rale de Lausanne)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by-nc-nd","license_id":"https://openalex.org/licenses/cc-by-nc-nd","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"WoS","raw_type":"conference proceedings"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":24,"referenced_works":["https://openalex.org/W156128227","https://openalex.org/W1974608873","https://openalex.org/W2000616678","https://openalex.org/W2040581748","https://openalex.org/W2057779758","https://openalex.org/W2093760065","https://openalex.org/W2103094658","https://openalex.org/W2164296674","https://openalex.org/W2207832021","https://openalex.org/W2289066165","https://openalex.org/W2592188706","https://openalex.org/W2594056515","https://openalex.org/W2594662937","https://openalex.org/W2762911491","https://openalex.org/W2772486871","https://openalex.org/W2772827996","https://openalex.org/W2890686367","https://openalex.org/W2898037052","https://openalex.org/W2913972837","https://openalex.org/W3008080130","https://openalex.org/W3014311131","https://openalex.org/W3107101448","https://openalex.org/W4206669215","https://openalex.org/W4250933102"],"related_works":["https://openalex.org/W2592188706","https://openalex.org/W2048147817","https://openalex.org/W2073901219","https://openalex.org/W4389751695","https://openalex.org/W2077104824","https://openalex.org/W1535099794","https://openalex.org/W2041630899","https://openalex.org/W2994906898","https://openalex.org/W2952185493","https://openalex.org/W2019388039"],"abstract_inverted_index":{"Scala":[0],"3":[1],"provides":[2],"a":[3,39,55],"metaprogramming":[4,27],"interface":[5],"that":[6],"represents":[7],"the":[8,19,26],"abstract":[9],"syntax":[10],"tree":[11],"definitions":[12],"using":[13],"algebraic":[14,32],"data":[15,33],"types.":[16],"To":[17],"allow":[18],"compiler":[20],"to":[21,45,54],"freely":[22],"evolve":[23],"without":[24,52],"breaking":[25],"interface,":[28],"we":[29],"present":[30],"virtual":[31],"types":[34,51],"(or":[35],"Virtual":[36],"ADTs)":[37],"--":[38],"programming":[40],"pattern,":[41],"which":[42],"allows":[43],"programmers":[44],"describe":[46],"mutually":[47],"recursive":[48],"hierarchies":[49],"of":[50],"coupling":[53],"particular":[56],"runtime":[57],"representation.":[58]},"counts_by_year":[],"updated_date":"2026-07-29T14:22:42.915294","created_date":"2025-10-10T00:00:00"}
