{"id":"https://openalex.org/W2911279247","doi":"https://doi.org/10.1017/s0956796804005398","title":"Embedded interpreters","display_name":"Embedded interpreters","publication_year":2005,"publication_date":"2005-01-05","ids":{"openalex":"https://openalex.org/W2911279247","doi":"https://doi.org/10.1017/s0956796804005398","mag":"2911279247"},"language":"en","primary_location":{"id":"doi:10.1017/s0956796804005398","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796804005398","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/34E3F8995878604F6E1CC9B332F65424/S0956796804005398a.pdf/div-class-title-embedded-interpreters-div.pdf","source":{"id":"https://openalex.org/S12266929","display_name":"Journal of Functional Programming","issn_l":"0956-7968","issn":["0956-7968","1469-7653"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Journal of Functional Programming","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/34E3F8995878604F6E1CC9B332F65424/S0956796804005398a.pdf/div-class-title-embedded-interpreters-div.pdf","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5023252122","display_name":"Nick Benton","orcid":null},"institutions":[{"id":"https://openalex.org/I4210164937","display_name":"Microsoft Research (United Kingdom)","ror":"https://ror.org/05k87vq12","country_code":"GB","type":"company","lineage":["https://openalex.org/I1290206253","https://openalex.org/I4210164937"]}],"countries":["GB"],"is_corresponding":true,"raw_author_name":"NICK BENTON","raw_affiliation_strings":["Microsoft Research, 7 J J Thomson Avenue, Cambridge CB3 0FB, UK (e-mail:","Microsoft Research, 7 J J Thomson Avenue, Cambridge CB3 0FB, UK"],"affiliations":[{"raw_affiliation_string":"Microsoft Research, 7 J J Thomson Avenue, Cambridge CB3 0FB, UK (e-mail:","institution_ids":["https://openalex.org/I4210164937"]},{"raw_affiliation_string":"Microsoft Research, 7 J J Thomson Avenue, Cambridge CB3 0FB, UK","institution_ids":["https://openalex.org/I4210164937"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5023252122"],"corresponding_institution_ids":["https://openalex.org/I4210164937"],"apc_list":null,"apc_paid":null,"fwci":8.6772,"has_fulltext":true,"cited_by_count":46,"citation_normalized_percentile":{"value":0.97716199,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":98},"biblio":{"volume":"15","issue":"4","first_page":"503","last_page":"542"},"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.9998999834060669,"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.9998999834060669,"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/T10142","display_name":"Formal Methods in Verification","score":0.9994000196456909,"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"}},{"id":"https://openalex.org/T11010","display_name":"Logic, Reasoning, and Knowledge","score":0.9973999857902527,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8955696225166321},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.806431233882904},{"id":"https://openalex.org/keywords/interpreter","display_name":"Interpreter","score":0.6902449131011963},{"id":"https://openalex.org/keywords/scripting-language","display_name":"Scripting language","score":0.664966881275177},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.6235402822494507},{"id":"https://openalex.org/keywords/monad","display_name":"Monad (category theory)","score":0.5500369071960449},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.43204188346862793},{"id":"https://openalex.org/keywords/domain-specific-language","display_name":"Domain-specific language","score":0.41094350814819336},{"id":"https://openalex.org/keywords/functor","display_name":"Functor","score":0.1489015519618988}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8955696225166321},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.806431233882904},{"id":"https://openalex.org/C122783720","wikidata":"https://www.wikidata.org/wiki/Q183065","display_name":"Interpreter","level":2,"score":0.6902449131011963},{"id":"https://openalex.org/C61423126","wikidata":"https://www.wikidata.org/wiki/Q187432","display_name":"Scripting language","level":2,"score":0.664966881275177},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.6235402822494507},{"id":"https://openalex.org/C33959348","wikidata":"https://www.wikidata.org/wiki/Q1630568","display_name":"Monad (category theory)","level":3,"score":0.5500369071960449},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.43204188346862793},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.41094350814819336},{"id":"https://openalex.org/C156772000","wikidata":"https://www.wikidata.org/wiki/Q864475","display_name":"Functor","level":2,"score":0.1489015519618988},{"id":"https://openalex.org/C118615104","wikidata":"https://www.wikidata.org/wiki/Q121416","display_name":"Discrete mathematics","level":1,"score":0.0},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1017/s0956796804005398","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796804005398","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/34E3F8995878604F6E1CC9B332F65424/S0956796804005398a.pdf/div-class-title-embedded-interpreters-div.pdf","source":{"id":"https://openalex.org/S12266929","display_name":"Journal of Functional Programming","issn_l":"0956-7968","issn":["0956-7968","1469-7653"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Journal of Functional Programming","raw_type":"journal-article"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.10.9720","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.9720","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://research.microsoft.com/~nick/benton03.ps","raw_type":"text"}],"best_oa_location":{"id":"doi:10.1017/s0956796804005398","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796804005398","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/34E3F8995878604F6E1CC9B332F65424/S0956796804005398a.pdf/div-class-title-embedded-interpreters-div.pdf","source":{"id":"https://openalex.org/S12266929","display_name":"Journal of Functional Programming","issn_l":"0956-7968","issn":["0956-7968","1469-7653"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Journal of Functional Programming","raw_type":"journal-article"},"sustainable_development_goals":[{"score":0.8100000023841858,"id":"https://metadata.un.org/sdg/4","display_name":"Quality Education"}],"awards":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2911279247.pdf","grobid_xml":"https://content.openalex.org/works/W2911279247.grobid-xml"},"referenced_works_count":70,"referenced_works":["https://openalex.org/W72241736","https://openalex.org/W96642435","https://openalex.org/W137136619","https://openalex.org/W175359279","https://openalex.org/W206348627","https://openalex.org/W1484366641","https://openalex.org/W1495087637","https://openalex.org/W1511942730","https://openalex.org/W1529526858","https://openalex.org/W1532465792","https://openalex.org/W1535217452","https://openalex.org/W1550189516","https://openalex.org/W1562811980","https://openalex.org/W1580340661","https://openalex.org/W1591694044","https://openalex.org/W1603799276","https://openalex.org/W1638436127","https://openalex.org/W1839902311","https://openalex.org/W1958582444","https://openalex.org/W1968470225","https://openalex.org/W1971957791","https://openalex.org/W1980476455","https://openalex.org/W1987073254","https://openalex.org/W1987203566","https://openalex.org/W1995674161","https://openalex.org/W1997143185","https://openalex.org/W2008838944","https://openalex.org/W2013844469","https://openalex.org/W2022949157","https://openalex.org/W2030916392","https://openalex.org/W2032777378","https://openalex.org/W2037021191","https://openalex.org/W2037984920","https://openalex.org/W2043100293","https://openalex.org/W2043416466","https://openalex.org/W2047869411","https://openalex.org/W2070179848","https://openalex.org/W2089674328","https://openalex.org/W2093541252","https://openalex.org/W2094455839","https://openalex.org/W2110001365","https://openalex.org/W2120839989","https://openalex.org/W2127114597","https://openalex.org/W2128303158","https://openalex.org/W2128932399","https://openalex.org/W2132734990","https://openalex.org/W2138229876","https://openalex.org/W2141576692","https://openalex.org/W2143823533","https://openalex.org/W2151782428","https://openalex.org/W2155028447","https://openalex.org/W2158386061","https://openalex.org/W2159591963","https://openalex.org/W2165407648","https://openalex.org/W2169761811","https://openalex.org/W2170626879","https://openalex.org/W2281942478","https://openalex.org/W2911502822","https://openalex.org/W2912333754","https://openalex.org/W2912351643","https://openalex.org/W2912745181","https://openalex.org/W4205683772","https://openalex.org/W4206180205","https://openalex.org/W4214487305","https://openalex.org/W4232319088","https://openalex.org/W4235625820","https://openalex.org/W4237650395","https://openalex.org/W4248755866","https://openalex.org/W4253591485","https://openalex.org/W4285719527"],"related_works":["https://openalex.org/W2754859507","https://openalex.org/W2112263414","https://openalex.org/W1602185604","https://openalex.org/W1911419940","https://openalex.org/W2466718051","https://openalex.org/W2373472360","https://openalex.org/W2995031344","https://openalex.org/W154014553","https://openalex.org/W3206498514","https://openalex.org/W2167031223"],"abstract_inverted_index":{"This":[0,46],"is":[1,47],"a":[2,125,158],"tutorial":[3],"on":[4],"using":[5],"type-indexed":[6],"embedding/projection":[7],"pairs":[8],"when":[9,50],"writing":[10],"interpreters":[11],"in":[12,21,28,60],"statically-typed":[13],"functional":[14,61,126],"languages.":[15,62],"The":[16],"method":[17,91],"allows":[18],"(higher-order)":[19],"values":[20,33,113],"the":[22,29,35,43,66,90,105,119],"interpreting":[23,44],"language":[24,31,37,127],"to":[25,57,76,83,99,111,114],"be":[26,39,74,115,140],"embedded":[27,141],"interpreted":[30,36],"and":[32,69,81,109,143],"from":[34,161],"may":[38,73,139],"projected":[40,144],"back":[41],"into":[42,163],"one.":[45],"particularly":[48],"useful":[49],"adding":[51],"command-line":[52],"interfaces":[53],"or":[54],"scripting":[55],"languages":[56,77],"applications":[58],"written":[59],"We":[63,86],"first":[64],"describe":[65],"basic":[67],"idea":[68],"show":[70,88,135],"how":[71,89,136],"it":[72],"extended":[75],"with":[78,93],"recursive":[79],"types":[80],"applied":[82],"elementary":[84],"meta-programming.":[85],"then":[87],"combines":[92],"Filinski's":[94],"continuation-based":[95],"monadic":[96,107],"reflection":[97],"operations":[98],"define":[100],"an":[101,122,130,146,149,154],"[lsquor]extensional[rsquor]":[102],"version":[103],"of":[104,121,157],"call-by-value":[106],"translation":[108,160],"hence":[110],"allow":[112],"mapped":[116],"bidirectionally":[117],"between":[118],"levels":[120],"interpreter":[123,147],"for":[124,148],"parameterized":[128],"by":[129],"arbitrary":[131],"monad.":[132],"Finally,":[133],"we":[134],"SML":[137],"functions":[138],"into,":[142],"from,":[145],"asynchronous":[150],"$\\pi$":[151,164],"-calculus":[152],"via":[153],"\u2018extensional\u2019":[155],"variant":[156],"standard":[159],"$\\lambda$":[162],".":[165]},"counts_by_year":[{"year":2023,"cited_by_count":1},{"year":2021,"cited_by_count":1},{"year":2020,"cited_by_count":3},{"year":2019,"cited_by_count":1},{"year":2018,"cited_by_count":2},{"year":2016,"cited_by_count":4},{"year":2013,"cited_by_count":3},{"year":2012,"cited_by_count":4}],"updated_date":"2026-04-04T16:13:02.066488","created_date":"2025-10-10T00:00:00"}
