{"id":"https://openalex.org/W4379410859","doi":"https://doi.org/10.1145/3587216.3587219","title":"First-Class Data Types in Shallow Embedded Domain-Specific Languages using Metaprogramming","display_name":"First-Class Data Types in Shallow Embedded Domain-Specific Languages using Metaprogramming","publication_year":2022,"publication_date":"2022-08-31","ids":{"openalex":"https://openalex.org/W4379410859","doi":"https://doi.org/10.1145/3587216.3587219"},"language":"en","primary_location":{"id":"doi:10.1145/3587216.3587219","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3587216.3587219","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3587216.3587219","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 34th Symposium on Implementation and Application of Functional Languages","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3587216.3587219","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5056832895","display_name":"Mart Lubbers","orcid":"https://orcid.org/0000-0002-4015-4878"},"institutions":[{"id":"https://openalex.org/I145872427","display_name":"Radboud University Nijmegen","ror":"https://ror.org/016xsfp80","country_code":"NL","type":"education","lineage":["https://openalex.org/I145872427"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Mart Lubbers","raw_affiliation_strings":["Radboud University, Netherlands"],"raw_orcid":"https://orcid.org/0000-0002-4015-4878","affiliations":[{"raw_affiliation_string":"Radboud University, Netherlands","institution_ids":["https://openalex.org/I145872427"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5053247184","display_name":"Pieter Koopman","orcid":"https://orcid.org/0000-0002-3688-0957"},"institutions":[{"id":"https://openalex.org/I145872427","display_name":"Radboud University Nijmegen","ror":"https://ror.org/016xsfp80","country_code":"NL","type":"education","lineage":["https://openalex.org/I145872427"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Pieter Koopman","raw_affiliation_strings":["Radboud University, Netherlands"],"raw_orcid":"https://orcid.org/0000-0002-3688-0957","affiliations":[{"raw_affiliation_string":"Radboud University, Netherlands","institution_ids":["https://openalex.org/I145872427"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5049917627","display_name":"Rinus Plasmeijer","orcid":"https://orcid.org/0009-0007-1606-8412"},"institutions":[{"id":"https://openalex.org/I145872427","display_name":"Radboud University Nijmegen","ror":"https://ror.org/016xsfp80","country_code":"NL","type":"education","lineage":["https://openalex.org/I145872427"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Rinus Plasmeijer","raw_affiliation_strings":["Radboud University, Netherlands"],"raw_orcid":"https://orcid.org/0009-0007-1606-8412","affiliations":[{"raw_affiliation_string":"Radboud University, Netherlands","institution_ids":["https://openalex.org/I145872427"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I145872427"],"apc_list":null,"apc_paid":null,"fwci":0.1388,"has_fulltext":true,"cited_by_count":1,"citation_normalized_percentile":{"value":0.5862434,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":90,"max":94},"biblio":{"volume":null,"issue":null,"first_page":"1","last_page":"12"},"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/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.998199999332428,"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/T10142","display_name":"Formal Methods in Verification","score":0.9973999857902527,"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/computer-science","display_name":"Computer science","score":0.8228181600570679},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7980570793151855},{"id":"https://openalex.org/keywords/domain-specific-language","display_name":"Domain-specific language","score":0.7289222478866577},{"id":"https://openalex.org/keywords/metaprogramming","display_name":"Metaprogramming","score":0.6404041647911072},{"id":"https://openalex.org/keywords/porting","display_name":"Porting","score":0.5741368532180786},{"id":"https://openalex.org/keywords/data-type","display_name":"Data type","score":0.5303595662117004},{"id":"https://openalex.org/keywords/syntax","display_name":"Syntax","score":0.5110763311386108},{"id":"https://openalex.org/keywords/abstract-syntax","display_name":"Abstract syntax","score":0.44058725237846375},{"id":"https://openalex.org/keywords/type-safety","display_name":"Type safety","score":0.43942782282829285},{"id":"https://openalex.org/keywords/boilerplate-text","display_name":"Boilerplate text","score":0.4240502119064331},{"id":"https://openalex.org/keywords/domain","display_name":"Domain (mathematical analysis)","score":0.42385831475257874},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.4122590720653534},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.2654131352901459},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.2519344687461853},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.09339585900306702},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.07830202579498291}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8228181600570679},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7980570793151855},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.7289222478866577},{"id":"https://openalex.org/C35390924","wikidata":"https://www.wikidata.org/wiki/Q661075","display_name":"Metaprogramming","level":2,"score":0.6404041647911072},{"id":"https://openalex.org/C106251023","wikidata":"https://www.wikidata.org/wiki/Q851989","display_name":"Porting","level":3,"score":0.5741368532180786},{"id":"https://openalex.org/C138958017","wikidata":"https://www.wikidata.org/wiki/Q190087","display_name":"Data type","level":2,"score":0.5303595662117004},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.5110763311386108},{"id":"https://openalex.org/C114408938","wikidata":"https://www.wikidata.org/wiki/Q333373","display_name":"Abstract syntax","level":3,"score":0.44058725237846375},{"id":"https://openalex.org/C44779574","wikidata":"https://www.wikidata.org/wiki/Q736866","display_name":"Type safety","level":2,"score":0.43942782282829285},{"id":"https://openalex.org/C75701414","wikidata":"https://www.wikidata.org/wiki/Q1651672","display_name":"Boilerplate text","level":2,"score":0.4240502119064331},{"id":"https://openalex.org/C36503486","wikidata":"https://www.wikidata.org/wiki/Q11235244","display_name":"Domain (mathematical analysis)","level":2,"score":0.42385831475257874},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.4122590720653534},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.2654131352901459},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.2519344687461853},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.09339585900306702},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.07830202579498291},{"id":"https://openalex.org/C134306372","wikidata":"https://www.wikidata.org/wiki/Q7754","display_name":"Mathematical analysis","level":1,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3587216.3587219","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3587216.3587219","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3587216.3587219","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 34th Symposium on Implementation and Application of Functional Languages","raw_type":"proceedings-article"},{"id":"pmh:oai:repository.ubn.ru.nl:2066/294791","is_oa":true,"landing_page_url":"https://hdl.handle.net/2066/294791","pdf_url":"https://repository.ubn.ru.nl//bitstream/handle/2066/294791/294791.pdf","source":{"id":"https://openalex.org/S4306401067","display_name":"Radboud Repository (Radboud University)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I145872427","host_organization_name":"Radboud University Nijmegen","host_organization_lineage":["https://openalex.org/I145872427"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Article in monograph or in proceedings"}],"best_oa_location":{"id":"doi:10.1145/3587216.3587219","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3587216.3587219","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3587216.3587219","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 34th Symposium on Implementation and Application of Functional Languages","raw_type":"proceedings-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W4379410859.pdf","grobid_xml":"https://content.openalex.org/works/W4379410859.grobid-xml"},"referenced_works_count":40,"referenced_works":["https://openalex.org/W1489879801","https://openalex.org/W1498739950","https://openalex.org/W1543641760","https://openalex.org/W1572186276","https://openalex.org/W1973817937","https://openalex.org/W1997986044","https://openalex.org/W2009775190","https://openalex.org/W2014995396","https://openalex.org/W2029786195","https://openalex.org/W2039680593","https://openalex.org/W2044417921","https://openalex.org/W2055947235","https://openalex.org/W2080728122","https://openalex.org/W2093896470","https://openalex.org/W2101407609","https://openalex.org/W2103416728","https://openalex.org/W2110122404","https://openalex.org/W2122339407","https://openalex.org/W2123092976","https://openalex.org/W2128075089","https://openalex.org/W2136758562","https://openalex.org/W2155480936","https://openalex.org/W2163552400","https://openalex.org/W2167031223","https://openalex.org/W2176580510","https://openalex.org/W2248636262","https://openalex.org/W2296133386","https://openalex.org/W2931656653","https://openalex.org/W2964388785","https://openalex.org/W2997284983","https://openalex.org/W3004785238","https://openalex.org/W3046312033","https://openalex.org/W3046990711","https://openalex.org/W3122607007","https://openalex.org/W4205167460","https://openalex.org/W4237428230","https://openalex.org/W4246086292","https://openalex.org/W4286110941","https://openalex.org/W4293812887","https://openalex.org/W4294844555"],"related_works":["https://openalex.org/W5245790","https://openalex.org/W4288358733","https://openalex.org/W2965097461","https://openalex.org/W2910182226","https://openalex.org/W2048485245","https://openalex.org/W788094402","https://openalex.org/W2041630899","https://openalex.org/W1492136318","https://openalex.org/W4206955716","https://openalex.org/W4379410859"],"abstract_inverted_index":{"Functional":[0],"programming":[1],"languages":[2,10],"are":[3,31],"excellent":[4],"for":[5],"hosting":[6],"embedded":[7,37],"domain":[8],"specific":[9],"(eDSLs)":[11],"because":[12],"of":[13,59],"their":[14],"rich":[15],"type":[16,48],"systems,":[17],"minimal":[18],"syntax,":[19],"and":[20],"referential":[21],"transparency.":[22],"However,":[23],"data":[24,47],"types":[25],"defined":[26],"in":[27,35,56],"the":[28,36,43,46,53],"host":[29],"language":[30],"not":[32],"automatically":[33],"available":[34],"language.":[38],"To":[39],"do":[40],"so,":[41],"all":[42],"operations":[44],"on":[45],"must":[49],"be":[50],"ported":[51],"to":[52],"eDSL":[54],"resulting":[55],"a":[57],"lot":[58],"boilerplate.":[60]},"counts_by_year":[{"year":2023,"cited_by_count":1}],"updated_date":"2026-06-26T08:34:08.712188","created_date":"2025-10-10T00:00:00"}
