{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,23]],"date-time":"2025-08-23T05:17:12Z","timestamp":1755926232900,"version":"3.41.0"},"reference-count":76,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2018,7,30]],"date-time":"2018-07-30T00:00:00Z","timestamp":1532908800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100009226","name":"National Security Agency","doi-asserted-by":"publisher","award":["H98230-14-C-0140"],"award-info":[{"award-number":["H98230-14-C-0140"]}],"id":[{"id":"10.13039\/100009226","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"publisher","award":["FA8750-16-2-0042"],"award-info":[{"award-number":["FA8750-16-2-0042"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,7,30]]},"abstract":"<jats:p>General-purpose programming languages typically define literal notation for only a small number of common data structures, like lists. This is unsatisfying because there are many other data structures for which literal notation might be useful, e.g. finite maps, regular expressions, HTML elements, SQL queries, syntax trees for various languages and chemical structures. There may also be different implementations of each of these data structures behind a common interface that could all benefit from common literal notation. This paper introduces<jats:italic>typed literal macros (TLMs)<\/jats:italic>, which allow library providers to define new literal notation of nearly arbitrary design at any specified type or parameterized family of types. Compared to existing approaches, TLMs are uniquely<jats:italic>reasonable<\/jats:italic>. TLM clients can reason abstractly, i.e. without examining grammars or generated expansions, about types and binding. The system only needs to convey to clients, via secondary notation, the inferred<jats:italic>segmentation<\/jats:italic>of each literal body, which gives the locations and types of spliced subterms. TLM providers can reason modularly about syntactic ambiguity and expansion correctness according to clear criteria. This paper incorporates TLMs into Reason, an emerging alternative front-end for OCaml, and demonstrates, through several non-trivial case studies, how TLMs integrate with the advanced features of OCaml, including pattern matching and the module system. We also discuss optional integration with MetaOCaml, which allows TLM providers to be more confident about type correctness. Finally, we establish these abstract reasoning principles formally with a detailed type-theoretic account of expression and pattern TLMs for \u201ccore ML\u201d.<\/jats:p>","DOI":"10.1145\/3236801","type":"journal-article","created":{"date-parts":[[2018,7,31]],"date-time":"2018-07-31T19:41:18Z","timestamp":1533066078000},"page":"1-32","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Reasonably programmable literal notation"],"prefix":"10.1145","volume":"2","author":[{"given":"Cyrus","family":"Omar","sequence":"first","affiliation":[{"name":"University of Chicago, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jonathan","family":"Aldrich","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2018,7,30]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/2676726.2677013"},{"volume-title":"a line notation and computerized interpreter for chemical structures","author":"Anderson Eric","key":"e_1_2_2_2_1","unstructured":"Eric Anderson , Gilman D Veith , and David Weininger . 1987. SMILES , a line notation and computerized interpreter for chemical structures . US Environmental Protection Agency , Environmental Research Laboratory. Eric Anderson, Gilman D Veith, and David Weininger. 1987. SMILES, a line notation and computerized interpreter for chemical structures. US Environmental Protection Agency, Environmental Research Laboratory."},{"key":"e_1_2_2_3_1","first-page":"2018","article-title":"Markup.ml \u2014 Error-recovering streaming HTML5 and XML parsers for OCaml. http:\/\/aantron.github. io\/markup.ml\/","volume":"14","author":"Bachin Anton","year":"2018","unstructured":"Anton Bachin . 2018 . Markup.ml \u2014 Error-recovering streaming HTML5 and XML parsers for OCaml. http:\/\/aantron.github. io\/markup.ml\/ . Retrieved Mar. 14 , 2018 . Anton Bachin. 2018. Markup.ml \u2014 Error-recovering streaming HTML5 and XML parsers for OCaml. http:\/\/aantron.github. io\/markup.ml\/ . Retrieved Mar. 14, 2018.","journal-title":"Retrieved Mar."},{"key":"e_1_2_2_4_1","unstructured":"Alan Bawden. 1999. Quasiquotation in Lisp. In Partial Evaluation and Semantic-Based Program Manipulation. http: \/\/repository.readscheme.org\/ftp\/papers\/pepm99\/bawden.pdf Alan Bawden. 1999. Quasiquotation in Lisp. In Partial Evaluation and Semantic-Based Program Manipulation. http: \/\/repository.readscheme.org\/ftp\/papers\/pepm99\/bawden.pdf"},{"key":"e_1_2_2_5_1","doi-asserted-by":"crossref","unstructured":"Fr\u00e9d\u00e9ric Bour Thomas Refis and Gabriel Scherer. 2018. Experience report: Merlin a Language Server for OCaml. In ICFP. Fr\u00e9d\u00e9ric Bour Thomas Refis and Gabriel Scherer. 2018. Experience report: Merlin a Language Server for OCaml. In ICFP.","DOI":"10.1145\/3236798"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1289971.1289975"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2489837.2489840"},{"volume-title":"A history of mathematical notations","author":"Cajori Florian","key":"e_1_2_2_8_1","unstructured":"Florian Cajori . 1928. A history of mathematical notations . Vol. 1 . Courier Corporation . Florian Cajori. 1928. A history of mathematical notations. Vol. 1. Courier Corporation."},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806612"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2676726.2677004"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/99583.99607"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2009.06.001"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/11561347_25"},{"key":"e_1_2_2_14_1","volume-title":"Parsing Mixfix Operators. In 20th International Symposium on Implementation and Application of Functional Languages (IFL) - Revised Selected Papers.","author":"Danielsson Nils Anders","year":"2008","unstructured":"Nils Anders Danielsson and Ulf Norell . 2008 . Parsing Mixfix Operators. In 20th International Symposium on Implementation and Application of Functional Languages (IFL) - Revised Selected Papers. Nils Anders Danielsson and Ulf Norell. 2008. Parsing Mixfix Operators. In 20th International Symposium on Implementation and Application of Functional Languages (IFL) - Revised Selected Papers."},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237788"},{"key":"e_1_2_2_16_1","series-title":"September 2003","volume-title":"Camlp4 reference manual. Online","author":"de Rauglaudre Daniel","year":"2003","unstructured":"Daniel de Rauglaudre . 2003. Camlp4 reference manual. Online ( September 2003 ) ( 2003 ). Daniel de Rauglaudre. 2003. Camlp4 reference manual. Online (September 2003) (2003)."},{"key":"e_1_2_2_17_1","first-page":"2018","article-title":"Staged Metaprogramming in stock OCaml. https:\/\/github.com\/stedolan\/ppx_stage\/","volume":"14","author":"Dolan Stephen","year":"2018","unstructured":"Stephen Dolan . 2018 . Staged Metaprogramming in stock OCaml. https:\/\/github.com\/stedolan\/ppx_stage\/ . Retrieved Mar. 14 , 2018 . Stephen Dolan. 2018. Staged Metaprogramming in stock OCaml. https:\/\/github.com\/stedolan\/ppx_stage\/ . Retrieved Mar. 14, 2018.","journal-title":"Retrieved Mar."},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01806308"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048099"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517208.2517210"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364506.2364526"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2063176.2063195"},{"key":"e_1_2_2_23_1","volume-title":"Retrieved","author":"Frisch Alain","year":"2017","unstructured":"Alain Frisch , Peter Zotov , and Gabriel Radanne . 2017 . ppx_tools: Tools for authors of ppx rewriters. https:\/\/github.com\/ ocaml-ppx\/ppx_tools . Retrieved June 22, 2018. Alain Frisch, Peter Zotov, and Gabriel Radanne. 2017. ppx_tools: Tools for authors of ppx rewriters. https:\/\/github.com\/ ocaml-ppx\/ppx_tools . Retrieved June 22, 2018."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/507635.507646"},{"key":"e_1_2_2_25_1","volume-title":"Proceedings of the Conference held at Univ. of Western Ontario. 77\u2013115","author":"Gorn Saul","year":"1965","unstructured":"Saul Gorn . 1965 . Explicit definitions and linguistic dominoes. In Systems and Computer Science , Proceedings of the Conference held at Univ. of Western Ontario. 77\u2013115 . Saul Gorn. 1965. Explicit definitions and linguistic dominoes. In Systems and Computer Science, Proceedings of the Conference held at Univ. of Western Ontario. 77\u2013115."},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/872732.806967"},{"key":"e_1_2_2_27_1","volume-title":"Proceedings of the HCI\u201989 Conference on People and Computers V (Cognitive Ergonomics). 443\u2013460","author":"Green T. R. G.","year":"1989","unstructured":"T. R. G. Green . 1989 . Cognitive Dimensions of Notations . In Proceedings of the HCI\u201989 Conference on People and Computers V (Cognitive Ergonomics). 443\u2013460 . T. R. G. Green. 1989. Cognitive Dimensions of Notations. In Proceedings of the HCI\u201989 Conference on People and Computers V (Cognitive Ergonomics). 443\u2013460."},{"key":"e_1_2_2_28_1","doi-asserted-by":"crossref","unstructured":"T.G. Griffin. 1988. Notational definition-a formal account. In Logic in Computer Science (LICS \u201988). 372\u2013383. T.G. Griffin. 1988. Notational definition-a formal account. In Logic in Computer Science (LICS \u201988). 372\u2013383.","DOI":"10.1109\/LICS.1988.5134"},{"key":"e_1_2_2_29_1","unstructured":"Robert Harper. 1997. Programming in Standard ML. http:\/\/www.cs.cmu.edu\/~rwh\/smlbook\/book.pdf . Working draft retrieved June 21 2015. Robert Harper. 1997. Programming in Standard ML. http:\/\/www.cs.cmu.edu\/~rwh\/smlbook\/book.pdf . Working draft retrieved June 21 2015."},{"volume-title":"Practical Foundations for Programming Languages","author":"Harper Robert","key":"e_1_2_2_30_1","unstructured":"Robert Harper . 2012. Practical Foundations for Programming Languages . Cambridge University Press . Robert Harper. 2012. Practical Foundations for Programming Languages. Cambridge University Press."},{"volume-title":"MACRO Definitions for LISP. Report A. I. MEMO 57","author":"Hart T. P.","key":"e_1_2_2_31_1","unstructured":"T. P. Hart . 1963. MACRO Definitions for LISP. Report A. I. MEMO 57 . Massachusetts Institute of Technology , A.I. Lab., Cambridge, Massachusetts. T. P. Hart. 1963. MACRO Definitions for LISP. Report A. I. MEMO 57. Massachusetts Institute of Technology, A.I. Lab., Cambridge, Massachusetts."},{"key":"e_1_2_2_33_1","unstructured":"David Herman and Mitchell Wand. 2008. A Theory of Hygienic Macros. In ESOP. David Herman and Mitchell Wand. 2008. A Theory of Hygienic Macros. In ESOP."},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000411"},{"key":"e_1_2_2_35_1","volume-title":"Issue 7.","author":"IEEE.","year":"2016","unstructured":"IEEE. 2016. Information Technology Portable Operating System Interface (POSIX) Base Specifications , Issue 7. ( 2016 ). IEEE. 2016. Information Technology Portable Operating System Interface (POSIX) Base Specifications, Issue 7. (2016)."},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/358896.358899"},{"key":"e_1_2_2_37_1","volume-title":"Yacc: Yet another compiler-compiler.","author":"Johnson Stephen C","year":"1975","unstructured":"Stephen C Johnson . 1975 . Yacc: Yet another compiler-compiler. Vol. 32 . Bell Laboratories Murray Hill , NJ. Stephen C Johnson. 1975. Yacc: Yet another compiler-compiler. Vol. 32. Bell Laboratories Murray Hill, NJ."},{"volume-title":"Haskell 98 language and libraries: the revised report","author":"Jones Simon Peyton","key":"e_1_2_2_38_1","unstructured":"Simon Peyton Jones . 2003. Haskell 98 language and libraries: the revised report . Cambridge University Press . Simon Peyton Jones. 2003. Haskell 98 language and libraries: the revised report. Cambridge University Press."},{"key":"e_1_2_2_39_1","first-page":"2018","article-title":"New directions for Template Haskell. https:\/\/ghc.haskell.org\/trac\/ghc\/blog\/Template%20Haskell% 20Proposal","volume":"14","author":"Jones Simon Peyton","year":"2013","unstructured":"Simon Peyton Jones . 2013 . New directions for Template Haskell. https:\/\/ghc.haskell.org\/trac\/ghc\/blog\/Template%20Haskell% 20Proposal . Retrieved Mar. 14 , 2018 . Simon Peyton Jones. 2013. New directions for Template Haskell. https:\/\/ghc.haskell.org\/trac\/ghc\/blog\/Template%20Haskell% 20Proposal . Retrieved Mar. 14, 2018.","journal-title":"Retrieved Mar."},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-28869-2_20"},{"key":"e_1_2_2_41_1","volume-title":"Scheme Workshop.","author":"Kiselyov Oleg","year":"2002","unstructured":"Oleg Kiselyov . 2002 . How to write seemingly unhygienic and referentially opaque macros with syntax-rules . In Scheme Workshop. Oleg Kiselyov. 2002. How to write seemingly unhygienic and referentially opaque macros with syntax-rules. In Scheme Workshop."},{"key":"e_1_2_2_42_1","volume-title":"FLOPS 2014, Kanazawa, Japan, June 4-6, 2014. Proceedings. 86\u2013102","author":"Kiselyov Oleg","year":"2014","unstructured":"Oleg Kiselyov . 2014 . The Design and Implementation of BER MetaOCaml - System Description. In Functional and Logic Programming - 12th International Symposium , FLOPS 2014, Kanazawa, Japan, June 4-6, 2014. Proceedings. 86\u2013102 . Oleg Kiselyov. 2014. The Design and Implementation of BER MetaOCaml - System Description. In Functional and Logic Programming - 12th International Symposium, FLOPS 2014, Kanazawa, Japan, June 4-6, 2014. Proceedings. 86\u2013102."},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/319838.319859"},{"volume-title":"The OCaml system release 4.02 Documentation and user\u2019s manual","author":"Leroy Xavier","key":"e_1_2_2_44_1","unstructured":"Xavier Leroy , Damien Doligez , Alain Frisch , Jacques Garrigue , Didier R\u00e9my , and J\u00e9r\u00f4me Vouillon . 2014. The OCaml system release 4.02 Documentation and user\u2019s manual . Institut National de Recherche en Informatique et en Automatique . Xavier Leroy, Damien Doligez, Alain Frisch, Jacques Garrigue, Didier R\u00e9my, and J\u00e9r\u00f4me Vouillon. 2014. The OCaml system release 4.02 Documentation and user\u2019s manual. Institut National de Recherche en Informatique et en Automatique."},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500365.2500596"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837644"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1291201.1291211"},{"key":"e_1_2_2_48_1","unstructured":"Coq Team. 2004. The Coq proof assistant reference manual. LogiCal Project. http:\/\/coq.inria.fr Version 8.0. Coq Team. 2004. The Coq proof assistant reference manual. LogiCal Project. http:\/\/coq.inria.fr Version 8.0."},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/800025.1198360"},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1142473.1142552"},{"volume-title":"The Definition of Standard ML (Revised)","author":"Milner Robin","key":"e_1_2_2_51_1","unstructured":"Robin Milner , Mads Tofte , Robert Harper , and David MacQueen . 1997. The Definition of Standard ML (Revised) . The MIT Press . Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. 1997. The Definition of Standard ML (Revised). The MIT Press."},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/44501.45065"},{"volume-title":"Programming in Scala","author":"Odersky Martin","key":"e_1_2_2_55_1","unstructured":"Martin Odersky , Lex Spoon , and Bill Venners . 2008. Programming in Scala . Artima Inc . Martin Odersky, Lex Spoon, and Bill Venners. 2008. Programming in Scala. Artima Inc."},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-44202-9_5"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009900"},{"volume-title":"Symposium on Advances in Programming Languages (SNAPL). http:\/\/arxiv.org\/abs\/1703","author":"Omar Cyrus","key":"e_1_2_2_60_1","unstructured":"Cyrus Omar , Ian Voysey , Michael Hilton , Joshua Sunshine , Claire Le Goues , Jonathan Aldrich , and Matthew A. Hammer . 2017b. Toward semantic foundations for program editors . In Symposium on Advances in Programming Languages (SNAPL). http:\/\/arxiv.org\/abs\/1703 .08694 Cyrus Omar, Ian Voysey, Michael Hilton, Joshua Sunshine, Claire Le Goues, Jonathan Aldrich, and Matthew A. Hammer. 2017b. Toward semantic foundations for program editors. In Symposium on Advances in Programming Languages (SNAPL). http:\/\/arxiv.org\/abs\/1703.08694"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/2695664.2695936"},{"volume-title":"Active Code Completion. In International Conference on Software Engineering (ICSE). http:\/\/dl.acm.org\/citation.cfm?id=2337223","author":"Omar Cyrus","key":"e_1_2_2_62_1","unstructured":"Cyrus Omar , YoungSeok Yoon , Thomas D. LaToza , and Brad A. Myers . 2012 . Active Code Completion. In International Conference on Software Engineering (ICSE). http:\/\/dl.acm.org\/citation.cfm?id=2337223 .2337324 Cyrus Omar, YoungSeok Yoon, Thomas D. LaToza, and Brad A. Myers. 2012. Active Code Completion. In International Conference on Software Engineering (ICSE). http:\/\/dl.acm.org\/citation.cfm?id=2337223.2337324"},{"key":"e_1_2_2_63_1","volume-title":"Retrieved","author":"OWASP.","year":"2017","unstructured":"OWASP. 2017 . OWASP Top 10 2013. https:\/\/www.owasp.org\/index.php\/Top_10_2017-Top_10 . Retrieved May 28, 2017. OWASP. 2017. OWASP Top 10 2013. https:\/\/www.owasp.org\/index.php\/Top_10_2017-Top_10 . Retrieved May 28, 2017."},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/345099.345100"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192398"},{"key":"e_1_2_2_66_1","doi-asserted-by":"crossref","unstructured":"Justin Pombrio Shriram Krishnamurthi and Mitchell Wand. 2017. Inferring Scope through Syntactic Sugar. (2017). Justin Pombrio Shriram Krishnamurthi and Mitchell Wand. 2017. Inferring Scope through Syntactic Sugar. (2017).","DOI":"10.1145\/3110288"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2005.11.044"},{"key":"e_1_2_2_68_1","first-page":"2018","article-title":"The Menhir parser generator. http:\/\/gallium.inria.fr\/fpottier\/menhir","volume":"14","author":"Pottier Fran\u00e7ois","year":"2016","unstructured":"Fran\u00e7ois Pottier and Yann R\u00e9gis-Gianas . 2016 . The Menhir parser generator. http:\/\/gallium.inria.fr\/fpottier\/menhir . Retrieved Mar. 14 , 2018 . (2016). Fran\u00e7ois Pottier and Yann R\u00e9gis-Gianas. 2016. The Menhir parser generator. http:\/\/gallium.inria.fr\/fpottier\/menhir . Retrieved Mar. 14, 2018. (2016).","journal-title":"Retrieved Mar."},{"key":"e_1_2_2_69_1","first-page":"2018","article-title":"Reason Guide: What and Why? https:\/\/reasonml.github.io\/docs\/en\/what-and-why.html","volume":"14","author":"Team Reason","year":"2018","unstructured":"Reason Team . 2018 . Reason Guide: What and Why? https:\/\/reasonml.github.io\/docs\/en\/what-and-why.html . Retrieved Mar. 14 , 2018 . Reason Team. 2018. Reason Guide: What and Why? https:\/\/reasonml.github.io\/docs\/en\/what-and-why.html . Retrieved Mar. 14, 2018.","journal-title":"Retrieved Mar."},{"key":"e_1_2_2_70_1","volume-title":"IFIP Congress.","author":"Reynolds J C","year":"1983","unstructured":"J C Reynolds . 1983 . Types, abstraction and parametric polymorphism . In IFIP Congress. J C Reynolds. 1983. Types, abstraction and parametric polymorphism. In IFIP Congress."},{"key":"e_1_2_2_71_1","first-page":"2018","article-title":"Macros - Rust Documentation. https:\/\/doc.rust-lang.org\/1.7.0\/book\/macros.html","volume":"30","author":"Team Rust","year":"2018","unstructured":"Rust Team . 2018 . Macros - Rust Documentation. https:\/\/doc.rust-lang.org\/1.7.0\/book\/macros.html . Retrieved Mar. 30 , 2018 .. Rust Team. 2018. Macros - Rust Documentation. https:\/\/doc.rust-lang.org\/1.7.0\/book\/macros.html . Retrieved Mar. 30, 2018..","journal-title":"Retrieved Mar."},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542499"},{"key":"e_1_2_2_75_1","series-title":"Lecture Notes in Computer Science 1608","volume-title":"Using MetaML: A Staged Programming Language","author":"Sheard Tim","year":"1999","unstructured":"Tim Sheard . 1999. Using MetaML: A Staged Programming Language . Lecture Notes in Computer Science 1608 ( 1999 ). Tim Sheard. 1999. Using MetaML: A Staged Programming Language. Lecture Notes in Computer Science 1608 (1999)."},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/581690.581691"},{"key":"e_1_2_2_77_1","unstructured":"Konrad Slind. 1991. Object language embedding in Standard ML of New-Jersey. In ICFP. Konrad Slind. 1991. Object language embedding in Standard ML of New-Jersey. In ICFP."},{"key":"e_1_2_2_78_1","volume-title":"http:\/\/www.smlnj.org\/doc\/quote.html . Retrieved","author":"Documentation NJ","year":"2015","unstructured":"SML\/ NJ Documentation . 2015. SML\/ NJ Quote\/ Antiquote . http:\/\/www.smlnj.org\/doc\/quote.html . Retrieved Nov. 3, 2015 . SML\/NJ Documentation. 2015. SML\/NJ Quote\/Antiquote. http:\/\/www.smlnj.org\/doc\/quote.html . Retrieved Nov. 3, 2015."},{"volume-title":"Domain-Specific Program Generation","author":"Taha Walid","key":"e_1_2_2_79_1","unstructured":"Walid Taha . 2004. A gentle introduction to multi-stage programming . In Domain-Specific Program Generation . Springer , 30\u201350. Walid Taha. 2004. A gentle introduction to multi-stage programming. In Domain-Specific Program Generation. Springer, 30\u201350."},{"key":"e_1_2_2_80_1","doi-asserted-by":"crossref","unstructured":"Walid Taha and Patricia Johann. 2003. Staged Notational Definitions. In GPCE. Walid Taha and Patricia Johann. 2003. Staged Notational Definitions. In GPCE.","DOI":"10.1007\/978-3-540-39815-8_6"},{"key":"e_1_2_2_81_1","doi-asserted-by":"publisher","DOI":"10.1145\/363347.363387"},{"key":"e_1_2_2_82_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0747-7171(06)80004-0"},{"key":"e_1_2_2_83_1","doi-asserted-by":"publisher","DOI":"10.1145\/376284.375783"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3236801","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3236801","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3236801","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,6]],"date-time":"2025-07-06T04:10:44Z","timestamp":1751775044000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3236801"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,7,30]]},"references-count":76,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2018,7,30]]}},"alternative-id":["10.1145\/3236801"],"URL":"https:\/\/doi.org\/10.1145\/3236801","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2018,7,30]]},"assertion":[{"value":"2018-07-30","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}